Imported Upstream version 2.8.0
[platform/upstream/libxml2.git] / test / schemas / vdv-first4_0.xsd
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!-- $Header: /home/cvsroot/w3c-xml-schema/user/examples/first-complex-types.xsd,v 1.1 2001/11/12 20:54:00 vdv Exp $ -->\r
3 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">\r
4 \r
5   <xs:simpleType name="string255">\r
6     <xs:restriction base="xs:token">\r
7       <xs:maxLength value="255"/>\r
8     </xs:restriction>\r
9   </xs:simpleType>\r
10 \r
11   <xs:simpleType name="string32">\r
12     <xs:restriction base="xs:token">\r
13       <xs:maxLength value="32"/>\r
14     </xs:restriction>\r
15   </xs:simpleType>\r
16 \r
17   <xs:simpleType name="isbn">\r
18     <xs:restriction base="xs:unsignedLong">\r
19       <xs:totalDigits value="10"/>\r
20       <xs:pattern value="\d{10}"/>\r
21     </xs:restriction>\r
22   </xs:simpleType>\r
23 \r
24   <xs:simpleType name="bookID">\r
25     <xs:restriction base="xs:ID">\r
26       <xs:pattern value="b\d{10}"/>\r
27     </xs:restriction>\r
28   </xs:simpleType>\r
29 \r
30   <xs:simpleType name="supportedLanguages">\r
31     <xs:restriction base="xs:language">\r
32       <xs:enumeration value="en"/>\r
33       <xs:enumeration value="es"/>\r
34     </xs:restriction>\r
35   </xs:simpleType>\r
36 \r
37   <xs:simpleType name="date">\r
38     <xs:restriction base="xs:date">\r
39       <xs:pattern value="[^:Z]*"/>\r
40     </xs:restriction>\r
41   </xs:simpleType>\r
42 \r
43   <xs:element name="name" type="string32"/>\r
44   <xs:element name="qualification" type="string255"/>\r
45   <xs:element name="born" type="date"/>\r
46   <xs:element name="dead" type="date"/>\r
47   <xs:element name="isbn" type="isbn"/>\r
48   \r
49   <xs:attribute name="id" type="xs:ID"/>\r
50   <xs:attribute name="available" type="xs:boolean"/>\r
51   <xs:attribute name="lang" type="supportedLanguages"/>\r
52 \r
53   <xs:complexType name="elementWithID">\r
54     <xs:attribute ref="id"/>\r
55   </xs:complexType>\r
56 \r
57   <xs:complexType name="bookTmp">\r
58     <xs:complexContent>\r
59       <xs:extension base="elementWithID">\r
60         <xs:sequence>\r
61           <xs:element ref="isbn"/>\r
62           <xs:element ref="title"/>\r
63           <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>\r
64           <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>\r
65         </xs:sequence>\r
66         <xs:attribute ref="available"/>\r
67       </xs:extension>\r
68     </xs:complexContent>\r
69   </xs:complexType>\r
70   \r
71   <xs:complexType name="personType">\r
72     <xs:complexContent>\r
73       <xs:extension base="elementWithID">\r
74         <xs:sequence>\r
75           <xs:element ref="name"/>\r
76           <xs:element ref="born"/>\r
77           <xs:element ref="dead" minOccurs="0"/>\r
78           <xs:element ref="qualification"  minOccurs="0"/>\r
79         </xs:sequence>\r
80       </xs:extension>\r
81     </xs:complexContent>\r
82   </xs:complexType>\r
83     \r
84   <xs:element name="title">\r
85     <xs:complexType>\r
86       <xs:simpleContent>\r
87         <xs:extension base="string255">\r
88           <xs:attribute ref="lang"/>\r
89         </xs:extension>\r
90       </xs:simpleContent>\r
91     </xs:complexType>\r
92   </xs:element>\r
93   \r
94   <xs:element name="library">\r
95     <xs:complexType>\r
96       <xs:sequence>\r
97         <xs:element ref="book" maxOccurs="unbounded"/>\r
98       </xs:sequence>\r
99     </xs:complexType>\r
100   </xs:element>\r
101   \r
102   <xs:element name="book">\r
103     <xs:complexType>\r
104       <xs:complexContent>\r
105         <xs:restriction base="bookTmp">\r
106           <xs:sequence>\r
107             <xs:element ref="isbn"/>\r
108             <xs:element ref="title"/>\r
109             <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>\r
110             <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>\r
111           </xs:sequence>\r
112           <xs:attribute name="id" type="bookID"/>\r
113           <xs:attribute ref="available"/>\r
114         </xs:restriction>\r
115       </xs:complexContent>\r
116     </xs:complexType>\r
117   </xs:element>\r
118 \r
119   <xs:element name="author">\r
120     <xs:complexType>\r
121       <xs:complexContent>\r
122         <xs:restriction base="personType">\r
123           <xs:sequence>\r
124             <xs:element ref="name"/>\r
125             <xs:element ref="born"/>\r
126             <xs:element ref="dead" minOccurs="0"/>\r
127           </xs:sequence>\r
128           <xs:attribute ref="id"/>\r
129         </xs:restriction>\r
130       </xs:complexContent>\r
131     </xs:complexType>\r
132   </xs:element>\r
133   \r
134   \r
135   <xs:element name="character">\r
136     <xs:complexType>\r
137       <xs:complexContent>\r
138         <xs:restriction base="personType">\r
139           <xs:sequence>\r
140             <xs:element ref="name"/>\r
141             <xs:element ref="born"/>\r
142             <xs:element ref="qualification"/>\r
143           </xs:sequence>\r
144           <xs:attribute ref="id"/>\r
145         </xs:restriction>\r
146       </xs:complexContent>\r
147     </xs:complexType>\r
148   </xs:element>\r
149   \r
150 </xs:schema>\r