<?xml version='1.0' encoding='UTF-8' ?>
<!ELEMENT XMLDoc (Envelope , Body)>
<!ELEMENT Envelope (SenderID , ReceiverID , VersionID? , DocType , TestProductionIndicator?)>
<!ELEMENT SenderID (#PCDATA)>
<!ELEMENT ReceiverID (#PCDATA)>
<!ELEMENT VersionID (#PCDATA)>
<!ELEMENT DocType (#PCDATA)>
<!ELEMENT TestProductionIndicator (#PCDATA)>
<!ELEMENT Body (HeaderRecord , ContactDetails? , BillingInfo?, ShippingDetails?, SaleTerms? , Reference? , LineItemsDetails+)>
<!ELEMENT HeaderRecord (DocType? , PurchaseOrderNo , PODate, SalesOrderNo , SODate, Status?)>
<!ELEMENT PurchaseOrderNo (#PCDATA)>
<!ELEMENT PODate (#PCDATA)>
<!ELEMENT SalesOrderNo (#PCDATA)>
<!ELEMENT SODate (#PCDATA)>
<!ELEMENT Status (#PCDATA)>
<!ELEMENT ContactDetails (Key? , Company , Name , PhoneNo , FaxNo? , EmailAddress? , Street1 , Street2? , City , State , PostalCode, Country)>
<!ELEMENT Key (#PCDATA)>
<!ELEMENT Company (#PCDATA)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT PhoneNo (#PCDATA)>
<!ELEMENT FaxNo (#PCDATA)>
<!ELEMENT EmailAddress (#PCDATA)>
<!ELEMENT Street1 (#PCDATA)>
<!ELEMENT Street2 (#PCDATA)>
<!ELEMENT City (#PCDATA)>
<!ELEMENT State (#PCDATA)>
<!ELEMENT PostalCode (#PCDATA)>
<!ELEMENT Country (#PCDATA)>
<!ELEMENT BillingInfo (BillingID, BillingAddress)>
<!ELEMENT BillingID     (#PCDATA)>      
<!ELEMENT BillingAddress (Company , Street1 , Street2? , City , State , PostalCode, Country)>
<!ELEMENT ShippingDetails (Key?, ShippingProvider , ShipToAddress, ShipmentNote?)>
<!ELEMENT ShippingProvider (#PCDATA)>
<!ELEMENT ShipmentNote (#PCDATA)>
<!ELEMENT ShipToAddress (Company , Street1 , Street2? , City , State , PostalCode, Country)>
<!ELEMENT SaleTerms (Key? , DiscountPercent? , DiscountDueDays , DiscountDueDate? , NetDueDate? , NetDays? , Description?)>
<!ELEMENT DiscountPercent (#PCDATA)>
<!ELEMENT DiscountDueDays (#PCDATA)>
<!ELEMENT DiscountDueDate (#PCDATA)>
<!ELEMENT NetDueDate (#PCDATA)>
<!ELEMENT NetDays (#PCDATA)>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT Reference (Key , Comments , Messages)>
<!ELEMENT Comments (#PCDATA)>
<!ELEMENT Messages (Key , Text)>
<!ELEMENT Text (#PCDATA)>
<!ELEMENT LineItemsDetails (LineNumber , ItemNumber , ItemDescription? , Quantity , UOM , UnitPrice , TotalPrice? , Schedules+)>
<!ELEMENT LineNumber (#PCDATA)>
<!ELEMENT ItemNumber (#PCDATA)>
<!ELEMENT ItemDescription (#PCDATA)>
<!ELEMENT Quantity (#PCDATA)>
<!ELEMENT UOM (#PCDATA)>
<!ELEMENT UnitPrice (#PCDATA)>
<!ELEMENT TotalPrice (#PCDATA)>
<!ELEMENT Schedules (ScheduleID, Quantity , ScheduledShipDate , UOM)>
<!ELEMENT ScheduleID (#PCDATA)>
<!ELEMENT ScheduledShipDate (#PCDATA)>
