<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by xcentric (private) -->
<?jaxfront controller=com.jaxfront.persistency.PersistencyDOMHandler?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xsd:annotation>
		<xsd:documentation>
   Purchase order schema for Example.com.
   Copyright 2000 Example.com. All rights reserved.
  </xsd:documentation>
	</xsd:annotation>
	<xsd:element name="purchaseOrder">
		<xsd:complexType>
			<xsd:complexContent>
				<xsd:extension base="PurchaseOrderType"/>
			</xsd:complexContent>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="comment" type="xsd:string"/>
	<xsd:complexType name="PurchaseOrderType">
		<xsd:sequence>
			<xsd:element name="deliveryOption">
				<xsd:annotation>
					<xsd:documentation>This is the delivery option annotation from XSD.</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:restriction base="xsd:string"/>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="email" type="xsd:string" minOccurs="0"/>
			<xsd:element name="express" type="xsd:boolean"/>
			<xsd:element name="shipTo">
				<xsd:complexType>
					<xsd:complexContent>
						<xsd:extension base="USAddress"/>
					</xsd:complexContent>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="billTo" type="USAddress" minOccurs="0"/>
			<xsd:element name="paymentMethod">
				<xsd:complexType>
					<xsd:choice>
						<xsd:element name="cash" type="xsd:string" minOccurs="0"/>
						<xsd:element name="cashOnDelivery" type="xsd:string" minOccurs="0"/>
						<xsd:element name="cheque">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="no" type="xsd:int"/>
									<xsd:element name="chequeInstitut" type="xsd:string"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="creditCard">
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element name="no" type="xsd:int"/>
									<xsd:element name="expirationDate" type="xsd:date"/>
									<xsd:element name="holderName"/>
									<xsd:element name="type">
										<xsd:simpleType>
											<xsd:restriction base="xsd:string">
												<xsd:enumeration value="master"/>
												<xsd:enumeration value="visa"/>
												<xsd:enumeration value="americanExpress"/>
											</xsd:restriction>
										</xsd:simpleType>
									</xsd:element>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:choice>
				</xsd:complexType>
			</xsd:element>
			<xsd:element ref="comment"/>
			<xsd:element name="item" type="itemType" minOccurs="3" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="orderDate" type="xsd:date" use="required"/>
	</xsd:complexType>
	<!-- Stock Keeping Unit, a code for identifying products -->
	<xsd:simpleType name="SKU">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\d{3}-[A-Z]{2}"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="USAddress">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string"/>
			<xsd:element name="street" type="xsd:string" minOccurs="0"/>
			<xsd:element name="city" type="xsd:string"/>
			<xsd:element name="zip" type="xsd:integer"/>
			<xsd:element name="country" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ProductType">
		<xsd:sequence>
			<xsd:element name="productName" type="xsd:string"/>
			<xsd:element name="quantity">
				<xsd:simpleType>
					<xsd:restriction base="xsd:positiveInteger">
						<xsd:maxInclusive value="100"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="price" type="xsd:decimal"/>
		</xsd:sequence>
		<xsd:attribute name="partNum" type="SKU" use="optional"/>
	</xsd:complexType>
	<xsd:element name="shipTo" type="USAddress"/>
	<xsd:element name="billTo" type="USAddress"/>
	<xsd:element name="items">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="item" type="itemType" minOccurs="0" maxOccurs="10"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="itemType">
		<xsd:sequence>
			<xsd:element name="product" type="ProductType"/>
			<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>
