Project 2 - Problem 8.7 from Oracle 10g textbook
Consider the following XML document containing data from the mail order database:
<mo>
<customers>
<customer cno="1111">
<cname>Charles</cname>
<street>123 Main St.</street>
<city>Wichita</city>
<zip>67226</zip>
<phone>316-636-5555</phone>
</customer>
…
</customers>
<employees>
<employee eno="1000">
<ename>Jones</ename>
<city>Wichita</city>
<zip>67226-1555</zip>
<hdate>1995-12-12</hdate>
</employee>
…
</employees>
<parts>
<part pno="10506">
<pname>Land Before Time I</pname>
<qoh>200</qoh>
<price>19.99</price>
<level>20</level>
</part>
…
</parts>
<orders>
<order ono="1022" takenBy="1001" customer="2222">
<receivedDate>1995-02-13</receivedDate>
<shippedDate>1995-02-20</shippedDate>
<items>
<item>
<partNumber>10601</partNumber>
<quantity>1</quantity>
</item>
<item>
<partNumber>10701</partNumber>
<quantity>1</quantity>
</item>
</items>
</order>
…
</orders>
</mo>
The XML document has the <mo> element at the root and contains four sub-elements: <customers>, <employees>, <parts>, and <orders> in sequence.
The <customers> element contains zero or more <customer> sub-elements and the <customer> element contains one attribute, cno, whose value is a 4-digit integer between 1000 and 9999, and five sub-elements: <cname> of type string, <street> of type string, <city> of type string, <zip> whose value is either a 5-digit number or a 5-digit number followed by a “-“ followed by a 4-digit number, and <phone> whose value is a 3-digit area code followed by a “-“ followed by a 3-digit exchange code, followed by a “-“ and followed by a 4-digit number.
The <employees> element contains zero or more <employee> sub-elements and the <employee> element contains one attribute, eno, whose value is a 4-digit integer between 1000 and 9999, and four sub-elements: <ename> of type string, <city> of type string, <zip> whose value is either a 5-digit number or a 5-digit number followed by a “-“ followed by a 4-digit number, and <hdate> of type date.
The <parts> element contains zero or more <part> sub-elements and the <part> element contains one attribute, pno, whose value is a 5-digit integer between 10000 and 99999, and four sub-elements: <pname> of type string, <qoh> of type positive integer, <price> of type positive decimal with two fractional digits, and <level> of type positive integer.
The <orders> element contains zero or more <order> sub-elements and the <order> element contains three attributes, ono, whose value is a 4-digit integer between 1000 and 9999, takenBy whose value is the same type as an employee number, and customer whose value is the same type as a customer number, and the following sub-elements: <receivedDate> of type date, an optional <shippedDate> of type date, and <items> which is a repeating group (one or more) of <item> elements. The <item> element contains two sub-elements: <partNumber> whose value is the same type as a part number and <quantity> of type positive integer.
Write an XML Schema specification for the mail order document and validate several instance documents against the schema.