blob: 3dc2647fea884683b9b417ff8c140ffc78ee6292 [file] [log] [blame]
<!--
* 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>