Page 107 -
P. 107

94                                            N. Russell and A. ter Hofstede
                            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
                             <xs:complexType name="PurchaseOrderType">
                               <xs:sequence>
                                 <xs:element name="Company" type="CompanyType" />
                                 <xs:element name="Order" type="OrderType" />
                                 <xs:element name="FreightCost" type="xs:double" />
                                 <xs:element name="DeliveryLocation" type="xs:string" />
                                 <xs:element name="InvoiceRequired" type="xs:boolean" />
                                 <xs:element name="PrePaid" type="xs:boolean" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="CompanyType">
                               <xs:sequence>
                                 <xs:element name="Name" type="xs:string" />
                                 <xs:element name="Address" type="xs:string" />
                                 <xs:element name="City" type="xs:string" />
                                 <xs:element name="State" type="xs:string" />
                                 <xs:element name="PostCode" type="xs:string" />
                                 <xs:element name="Phone" type="xs:string" />
                                 <xs:element name="Fax" type="xs:string" />
                                 <xs:element name="BusinessNumber" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="OrderType">
                               <xs:sequence>
                                 <xs:element name="OrderNumber" type="xs:string" />
                                 <xs:element name="OrderDate" type="xs:date" />
                                 <xs:element name="Currency" type="xs:string" />
                                 <xs:element name="OrderTerms" type="xs:string" />
                                 <xs:element name="RevisionNumber" type="xs:integer" />
                                 <xs:element name="Remarks" type="xs:string" />
                                 <xs:element name="OrderLines" type="OrderLinesType" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="OrderLinesType">
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Line" type="LineType" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="LineType">
                               <xs:sequence>
                                 <xs:element name="LineNumber" type="xs:integer" />
                                 <xs:element name="UnitCode" type="xs:string" />
                                 <xs:element name="UnitDescription" type="xs:string" />
                                 <xs:element name="UnitQuantity" type="xs:integer" />
                                 <xs:element name="Action" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="RouteGuideType">
                               <xs:sequence>
                                 <xs:element name="OrderNumber" type="xs:string" />
                                 <xs:element name="DeliveryLocation" type="xs:string" />
                                 <xs:element name="Trackpoints" type="TrackpointsType" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="TrackpointsType">
                               <xs:sequence>
                                 <xs:element maxOccurs="unbounded" name="Trackpoint" type="xs:string" />
                               </xs:sequence>
                             </xs:complexType>
                             <xs:complexType name="TrailerUsageType">
                               <xs:sequence>
                                 <xs:element name="OrderNumber" type="xs:string" />
                                 <xs:element name="OrderLines" type="OrderLinesType" />
                                 <xs:element name="Packages" type="PackagesType" />
                               </xs:sequence>
                             </xs:complexType>
                             ...
                            </xs:schema>
                           Listing 2.1 Working example: user-defined data type definition using XML schema
   102   103   104   105   106   107   108   109   110   111   112