1<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
2
3 <xs:element name="BOOKLIST">
4  <xs:complexType>
5   <xs:sequence>
6    <xs:element ref="BOOKS"/>
7    <xs:element ref="CATEGORIES"/>
8   </xs:sequence>
9  </xs:complexType>
10 </xs:element>
11
12 <xs:element name="BOOKS">
13  <xs:complexType>
14   <xs:sequence>
15    <xs:element ref="ITEM" maxOccurs="unbounded"/>
16   </xs:sequence>
17  </xs:complexType>
18 </xs:element>
19
20 <xs:element name="CATEGORIES">
21  <xs:complexType mixed="true">
22   <xs:sequence minOccurs="0" maxOccurs="unbounded">
23    <xs:element ref="CATEGORY"/>
24   </xs:sequence>
25   <xs:attribute name="DESC" type="xs:string" use="required"/>
26  </xs:complexType>
27 </xs:element>
28 <xs:element name="CATEGORY">
29  <xs:complexType>
30   <xs:attribute name="CODE" type="xs:ID" use="required"/>
31   <xs:attribute name="DESC" type="xs:string" use="required"/>
32   <xs:attribute name="NOTE" type="xs:string" use="optional"/>
33  </xs:complexType>
34 </xs:element>
35
36 <xs:element name="ITEM">
37  <xs:complexType>
38   <xs:sequence>
39    <xs:element name="TITLE" type="xs:string"/>
40    <xs:element name="AUTHOR" type="xs:string"/>
41    <xs:element name="PUBLISHER" type="xs:string"/>
42    <xs:element name="PUB-DATE" type="xs:date"/>
43    <xs:element name="LANGUAGE" type="languageType"/>
44    <xs:element name="PRICE" type="moneyType"/>
45    <xs:element name="QUANTITY" type="xs:integer"/>
46    <xs:element name="ISBN" type="ISBNType"/>
47    <xs:element name="PAGES" type="xs:integer"/>
48    <xs:element name="DIMENSIONS" type="dimensionsType"/>
49    <xs:element name="WEIGHT" type="weightType"/>
50   </xs:sequence>
51   <xs:attribute name="CAT" type="xs:IDREF" use="required"/>
52   <xs:attribute name="TAX" type="xs:NMTOKEN" use="optional" default="V"/>
53  </xs:complexType>
54 </xs:element>
55
56 <xs:simpleType name="languageType">
57  <xs:restriction base="xs:string">
58   <xs:enumeration value="English"/>
59   <xs:enumeration value="French"/>
60   <xs:enumeration value="German"/>
61   <xs:enumeration value="Spanish"/>
62  </xs:restriction>
63 </xs:simpleType>
64
65 <xs:complexType name="moneyType">
66  <xs:simpleContent>
67   <xs:extension base="xs:decimal">
68    <xs:attribute name="currency" type="currencyType"/>
69   </xs:extension>
70  </xs:simpleContent>
71 </xs:complexType>
72
73 <xs:simpleType name="currencyType">
74  <xs:restriction base="xs:string">
75   <xs:enumeration value="USD"/>
76   <xs:enumeration value="GBP"/>
77   <xs:enumeration value="EUR"/>
78   <xs:enumeration value="CAD"/>
79  </xs:restriction>
80 </xs:simpleType>
81
82 <xs:simpleType name="ISBNType">
83  <xs:restriction base="xs:string">
84   <xs:pattern value="[0-9]{9}[0-9X]"/>
85  </xs:restriction>
86 </xs:simpleType>
87
88 <xs:complexType name="dimensionsType">
89  <xs:simpleContent>
90   <xs:extension base="dimensionsContentType">
91    <xs:attribute name="UNIT" type="lengthUnitType"/>
92   </xs:extension>
93  </xs:simpleContent>
94 </xs:complexType>
95
96 <xs:simpleType name="dimensionsContentType">
97  <xs:restriction>
98   <xs:simpleType>
99    <xs:list itemType="dimensionType"/>
100   </xs:simpleType>
101   <xs:length value="3"/>
102  </xs:restriction>
103 </xs:simpleType>
104
105 <xs:simpleType name="lengthUnitType">
106  <xs:restriction base="xs:string">
107   <xs:enumeration value="in"/>
108   <xs:enumeration value="cm"/>
109  </xs:restriction>
110 </xs:simpleType>
111
112 <xs:simpleType name="dimensionType">
113  <xs:restriction base="xs:decimal">
114   <xs:minExclusive value="0.00"/>
115  </xs:restriction>
116 </xs:simpleType>
117
118 <xs:complexType name="weightType">
119  <xs:simpleContent>
120   <xs:extension base="xs:decimal">
121    <xs:attribute name="UNIT" type="weightUnitType"/>
122   </xs:extension>
123  </xs:simpleContent>
124 </xs:complexType>
125
126 <xs:simpleType name="weightUnitType">
127  <xs:restriction base="xs:string">
128   <xs:enumeration value="oz"/>
129   <xs:enumeration value="g"/>
130  </xs:restriction>
131 </xs:simpleType>
132
133</xs:schema>
134