| <!-- |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| --> |
| <schema targetNamespace="http://www.example.com/IPO" |
| xmlns="http://www.w3.org/2001/XMLSchema" |
| xmlns:ipo="http://www.example.com/IPO"> |
| |
| <annotation> |
| <documentation xml:lang="en"> |
| International Purchase order schema for Example.com |
| Copyright 2000 Example.com. All rights reserved. |
| </documentation> |
| </annotation> |
| |
| |
| <element name="purchaseOrder" type="ipo:PurchaseOrderType" /> |
| |
| <element name="comment" type="string" /> |
| |
| <complexType name="PurchaseOrderType"> |
| <sequence> |
| <element name="shipTo" type="ipo:Address" /> |
| <element name="billTo" type="ipo:Address" /> |
| <element ref="ipo:comment" minOccurs="0" /> |
| <element name="items" type="ipo:Items" /> |
| </sequence> |
| <attribute name="orderDate" type="date" /> |
| </complexType> |
| |
| <complexType name="Items"> |
| <sequence> |
| <element name="item" minOccurs="0" maxOccurs="unbounded"> |
| <complexType> |
| <sequence> |
| <element name="productName" type="string" /> |
| <element name="quantity"> |
| <simpleType> |
| <restriction base="positiveInteger"> |
| <maxExclusive value="100" /> |
| </restriction> |
| </simpleType> |
| </element> |
| <element name="USPrice" type="decimal" /> |
| <element ref="ipo:comment" minOccurs="0" /> |
| <element name="shipDate" type="date" |
| minOccurs="0" /> |
| </sequence> |
| <attribute name="partNum" type="ipo:SKU" |
| use="required" /> |
| </complexType> |
| </element> |
| </sequence> |
| </complexType> |
| |
| <simpleType name="SKU"> |
| <restriction base="string"> |
| <pattern value="\d{3}-[A-Z]{2}" /> |
| </restriction> |
| </simpleType> |
| |
| <complexType name="Address"> |
| <sequence> |
| <element name="name" type="string" /> |
| <element name="street" type="string" /> |
| <element name="city" type="string" /> |
| </sequence> |
| </complexType> |
| |
| <complexType name="USAddress"> |
| <complexContent> |
| <extension base="ipo:Address"> |
| <sequence> |
| <element name="state" type="ipo:USState" /> |
| <element name="zip" type="positiveInteger" /> |
| </sequence> |
| </extension> |
| </complexContent> |
| </complexType> |
| |
| <complexType name="UKAddress"> |
| <complexContent> |
| <extension base="ipo:Address"> |
| <sequence> |
| <element name="postcode" type="ipo:UKPostcode" /> |
| </sequence> |
| <attribute name="exportCode" type="positiveInteger" |
| fixed="1" /> |
| </extension> |
| </complexContent> |
| </complexType> |
| |
| <!-- other Address derivations for more countries --> |
| |
| <simpleType name="USState"> |
| <restriction base="string"> |
| <enumeration value="AK" /> |
| <enumeration value="AL" /> |
| <enumeration value="AR" /> |
| <enumeration value="CA" /> |
| <enumeration value="PA" /> |
| <!-- and so on ... --> |
| </restriction> |
| </simpleType> |
| |
| <simpleType name="Postcode"> |
| <restriction base="string"> |
| <length value="7" fixed="true" /> |
| </restriction> |
| </simpleType> |
| |
| |
| <simpleType name="UKPostcode"> |
| <restriction base="ipo:Postcode"> |
| <pattern value="[A-Z]{2}\d\s\d[A-Z]{2}" /> |
| </restriction> |
| </simpleType> |
| |
| |
| |
| </schema> |
| |