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> 151