<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
    <xsd:documentation>
        Extrait de : http://xmlfr.org/documentations/tutoriels/001218-0001 
    </xsd:documentation>
</xsd:annotation>

<!-- Definition of simple types -->

<xsd:simpleType name="nameType">
 <xsd:restriction base="xsd:string">
  <xsd:maxLength value="32"/>
 </xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="sinceType">
 <xsd:restriction base="xsd:date"/>
</xsd:simpleType>

<xsd:simpleType name="descType">
 <xsd:restriction base="xsd:string"/>
</xsd:simpleType>

<xsd:simpleType name="isbnType">
 <xsd:union>
  <xsd:simpleType>
   <xsd:restriction base="xsd:string">
    <xsd:pattern value="[0-9]{10}"/>
   </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType>
   <xsd:restriction base="xsd:NMTOKEN">
    <xsd:enumeration value="TBD"/>
    <xsd:enumeration value="NA"/>
   </xsd:restriction>
  </xsd:simpleType>
 </xsd:union>
</xsd:simpleType>

<!-- Definition of complex types -->

 <xsd:complexType name="characterType">
  <xsd:sequence>
   <xsd:element name="name" type="nameType"/>
   <xsd:element name="friend-of" type="nameType"
        minOccurs="0" maxOccurs="unbounded"/>
   <xsd:element name="since" type="sinceType" minOccurs="0"/>
   <xsd:element name="qualification" type="descType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="xsd:string"/>
   <xsd:element name="character" type="characterType"
        minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
  <xsd:attribute name="isbn" type="isbnType" use="required"/>
 </xsd:complexType>

<!-- Root element -->

<xsd:element name="library">
    <xsd:complexType>
        <xsd:choice>
            <xsd:element name="book" type="bookType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

</xsd:schema>