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