<!-- | |
* 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> | |