1<?xml version="1.0"?>
2<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3            xmlns:po="http://www.example.com/PO1"
4	    targetNamespace="http://www.example.com/PO1"
5	    elementFormDefault="unqualified"
6	    attributeFormDefault="unqualified">
7  <xsd:annotation>
8    <xsd:documentation xml:lang="en">
9Purchase order schema for Example.com.
10   Copyright 2000 Example.com. All rights reserved.
11    </xsd:documentation>
12  </xsd:annotation>
13  <xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/>
14  <xsd:element name="comment" type="xsd:string"/>
15  <xsd:complexType name="PurchaseOrderType">
16    <xsd:sequence>
17      <xsd:element name="shipTo" type="po:USAddress"/>
18      <xsd:element name="billTo" type="po:USAddress"/>
19      <xsd:element ref="po:comment" minOccurs="0"/>
20      <xsd:element name="items" type="po:Items"/>
21    </xsd:sequence>
22    <xsd:attribute name="orderDate" type="xsd:date"/>
23  </xsd:complexType>
24  <xsd:complexType name="USAddress">
25    <xsd:sequence>
26      <xsd:element name="name" type="xsd:string"/>
27      <xsd:element name="street" type="xsd:string"/>
28      <xsd:element name="city" type="xsd:string"/>
29      <xsd:element name="state" type="xsd:string"/>
30      <xsd:element name="zip" type="xsd:decimal"/>
31    </xsd:sequence>
32    <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
33  </xsd:complexType>
34  <xsd:complexType name="Items">
35    <xsd:sequence>
36      <xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
37        <xsd:complexType>
38          <xsd:sequence>
39            <xsd:element name="productName" type="xsd:string"/>
40            <xsd:element name="quantity">
41              <xsd:simpleType>
42                <xsd:restriction base="xsd:positiveInteger">
43                  <xsd:maxExclusive value="100"/>
44                </xsd:restriction>
45              </xsd:simpleType>
46            </xsd:element>
47            <xsd:element name="USPrice" type="xsd:decimal"/>
48            <xsd:element ref="po:comment" minOccurs="0"/>
49            <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
50          </xsd:sequence>
51          <xsd:attribute name="partNum" type="po:SKU" use="required"/>
52        </xsd:complexType>
53      </xsd:element>
54    </xsd:sequence>
55  </xsd:complexType>
56<!-- Stock Keeping Unit, a code for identifying products -->
57  <xsd:simpleType name="SKU">
58    <xsd:restriction base="xsd:string">
59      <xsd:pattern value="\d{3}-[A-Z]{2}"/>
60    </xsd:restriction>
61  </xsd:simpleType>
62</xsd:schema>
63
64
65