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
5 <xs:simpleType name="string255">
\r
6 <xs:restriction base="xs:token">
\r
7 <xs:maxLength value="255"/>
\r
11 <xs:simpleType name="string32">
\r
12 <xs:restriction base="xs:token">
\r
13 <xs:maxLength value="32"/>
\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
24 <xs:simpleType name="bookID">
\r
25 <xs:restriction base="xs:ID">
\r
26 <xs:pattern value="b\d{10}"/>
\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
37 <xs:simpleType name="date">
\r
38 <xs:restriction base="xs:date">
\r
39 <xs:pattern value="[^:Z]*"/>
\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
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
53 <xs:complexType name="elementWithID">
\r
54 <xs:attribute ref="id"/>
\r
57 <xs:complexType name="bookTmp">
\r
59 <xs:extension base="elementWithID">
\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
66 <xs:attribute ref="available"/>
\r
68 </xs:complexContent>
\r
71 <xs:complexType name="personType">
\r
73 <xs:extension base="elementWithID">
\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
81 </xs:complexContent>
\r
84 <xs:element name="title">
\r
87 <xs:extension base="string255">
\r
88 <xs:attribute ref="lang"/>
\r
94 <xs:element name="library">
\r
97 <xs:element ref="book" maxOccurs="unbounded"/>
\r
102 <xs:element name="book">
\r
104 <xs:complexContent>
\r
105 <xs:restriction base="bookTmp">
\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
112 <xs:attribute name="id" type="bookID"/>
\r
113 <xs:attribute ref="available"/>
\r
115 </xs:complexContent>
\r
119 <xs:element name="author">
\r
121 <xs:complexContent>
\r
122 <xs:restriction base="personType">
\r
124 <xs:element ref="name"/>
\r
125 <xs:element ref="born"/>
\r
126 <xs:element ref="dead" minOccurs="0"/>
\r
128 <xs:attribute ref="id"/>
\r
130 </xs:complexContent>
\r
135 <xs:element name="character">
\r
137 <xs:complexContent>
\r
138 <xs:restriction base="personType">
\r
140 <xs:element ref="name"/>
\r
141 <xs:element ref="born"/>
\r
142 <xs:element ref="qualification"/>
\r
144 <xs:attribute ref="id"/>
\r
146 </xs:complexContent>
\r