Home | History | Annotate | Download | only in schemas
      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