<!ELEMENT purchaseOrder (shipTo, billTo, Items)>
<!ATTLIST purchaseOrder
	xmlns:xsi CDATA #FIXED "http://www.w3.org/2001/XMLSchema-instance"
	xmlns CDATA #FIXED "http://www.altova.com/IPO"
	xmlns:ipo CDATA #FIXED "http://www.altova.com/IPO"
	orderDate CDATA #REQUIRED>

<!ENTITY % Address "(name, street, city, (postcode | (state, zip)))">

<!ELEMENT shipTo %Address;>
<!ATTLIST shipTo
	export-code CDATA #IMPLIED
	xsi:type (ipo:EU-Address | ipo:US-Address) #REQUIRED>

<!ELEMENT billTo %Address;>
<!ATTLIST billTo
	xsi:type (ipo:EU-Address | ipo:US-Address) #REQUIRED>

<!ELEMENT items (item+)>

<!ELEMENT item (productName, quantity, price, comment?, shipDate)>
<!ATTLIST item partNum ID #REQUIRED>

<!ELEMENT name (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT postcode (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT zip (#PCDATA)>
<!ELEMENT productName (#PCDATA)>
<!ELEMENT quantity (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT comment (#PCDATA)>
<!ELEMENT shipDate (#PCDATA)>