Schéma XML.
Un schéma XML permet de définir une grammaire XML selon une approche OO. Il permet de définir ses propres types et de les réutiliser, les spécialiser.
| Schema XML | Version | Exemple schema XML | Exemple XML | Commentaire | ||
|---|---|---|---|---|---|---|
| Release | ||||||
| Technologie | Technologie | FixPack | ||||
| Elément | Vide | EMPTY | 
      <!ELEMENT br EMPTY> | 
      <br/> | 
      Sans contenu. | |
| Texte | A interpréter | #PCDATA | 
      <strong><!ELEMENT</strong> description <strong>(#PCDATA)></strong> | 
      <description><br> Ce cas est arrivé le <date year="2003"/>.<br>
        </description> | 
      Parseable Character DATA. Les balises dans le texte seront traitées et les entités seront développées | |
| A ne pas interpréter | #CDATA | 
      <strong><!ELEMENT</strong> identifiant <strong>(#CDATA)></strong> | 
      <identifiant><br> AB52<br>
        </identifiant> | 
      Character DATA. Les balises dans le texte ne seront pas traitées et les entités ne seront pas développées | ||
| Séquence | (element1, element2, element3) | 
      <!<strong>ELEMENT</strong> voiture (marque,modele)> | 
      <voiture><br>
        <marque><br> Peugeot<br>
        </marque><br>
        <modele><br> 307<br>
        </modele><br>
        </voiture> | 
      L'ordre est imposé. | ||
| Liste | (element1+) | 
      <!<strong>ELEMENT</strong> liste (objet+)> | 
      <liste><br>
        <objet><br> Objet 1<br>
        </objet><br>
        <objet><br> Objet 2<br>
        </objet><br>
        </liste> | 
      Au moins 1 élément | ||
| Optionnel | Unique | (element1?) | 
      <!<strong>ELEMENT</strong> prenoms (prenom,prenom?)> | 
      <prenoms><br>
        <prenom><br> Jerome </prenom><br>
        <prenom><br> Pierre<br>
        </prenom> <br>
        </temoignage> | 
      0 ou 1 élément | |
| Multiple | (element1*) | 
      <!<strong>ELEMENT</strong> enfants (enfant*)> | 
      <enfants><br>
        <enfant><br> Jerome </enfant><br>
        <enfant><br> Jean-Pierre<br>
        </enfant> <br>
        </enfants> | 
      0 ou n éléments | ||
| Unique | (element1) | 
      <!<strong>ELEMENT</strong> temoignage (description)> | 
      <temoignage><br>
        <description><br> Il était une fois... </description><br>
        </temoignage> | 
      1 et 1 seul obligatoire | ||
| Entités | Prédéfinies | < | < | 
      <expression><br> 1 <strong><</strong> 2<br>
        </expression> | 
      Lower Than : inférieur à. | |
| > | > | 
       | 
      <expression><br> 2 <strong>></strong> 1<br>
        </expression> | 
      Greather Than : supérieur à. | ||
| & | & | 
       | 
       | 
      Ampersand : perluète | ||
| " | " | 
       | 
       | 
      Quote : guillemet | ||
| ' | ' | 
       | 
       | 
      Apostroph : apostrophe. | ||
| Attribut | Type | Texte | <strong>CDATA</strong> | 
      <!<strong>ATTLIST</strong> event startDate <strong>CDATA</strong> "inconnue"> | 
      <event startDate="12/08/1972"/> | 
      Character DATA | 
| Enuméré | <em>el1</em><strong>|</strong><em>el2</em><strong>|</strong><em>el3</em> | 
       | 
       | 
      |||
| Identifiant | ID | 
       | 
       | 
      |||
| Référence à un autreidentifiant | IDREF | 
       | 
       | 
      |||
| Références à d'autres identifiants | IDREFS | 
       | 
       | 
      |||
| Nom XML | NMTOKEN | 
       | 
       | 
      NaMe TOKEN | ||
| Noms XML | NMTOKENS | 
       | 
       | 
      NaME TOKENS | ||
| Entité | ENTITY | 
       | 
       | 
      |||
| Entités | ENTITIES | 
       | 
       | 
      |||
| Notation | NOTATION | 
       | 
       | 
      |||
| Valeur XML prédéfinie | xml: | 
       | 
       | 
      |||
| Valeur | Par défaut | <!ATTLIST event startDate CDATA <strong>"inconnue"</strong>> | 
      <event startDate="12/08/1972"> | 
      |||
| Obligatoire | #REQUIRED | 
      <!<strong>ATTLIST</strong> event author <strong>CDATA #REQUIRED</strong>> | 
      ||||
| Déductible | #IMPLIED | 
      <!<strong>ATTLIST</strong> event parent <strong>CDATA #IMPLIED</strong>> | 
      ||||
| Constante | #FIXED <em>valeur</em> | 
      <!<strong>ATTLIST</strong> event version <strong>CDATA #FIXED </strong>"1.0"> | 
      ||||
Un exemple de schéma XML est :
<xsd:<strong>schema xmlns</strong>:xsd<strong>="https://www.w3.org/2001/XMLSchema"></strong><br> <br> <xsd:<strong>annotation</strong>><br> <xsd:<strong>documentation</strong> xml:lang="fr"><br> Schema XML pour une librairie.<br> </xsd:<strong>documentation</strong>><br> </xsd:<strong>annotation</strong>><br> <br> <xsd:<strong>element</strong> <strong>name</strong>="librairie" <strong>type</strong>="typeLibrairie"/><br> <br> <xsd:<strong>complexType name</strong>="typeLibrairie"><br> <xsd:<strong>sequence</strong>><br> <xsd:<strong>element name</strong>="nom" <strong>type</strong>="xsd:<strong>string</strong>"/><br> <xsd:<strong>element name</strong>="sujet" <strong>type</strong>="typeSujet" <strong>minOccurs</strong>="1"/><br> </xsd:<strong>sequence</strong>><br> </xsd:<strong>complexType</strong>> <br> <br> <xsd:<strong>complexType name</strong>="typeSujet"><br> <xsd:<strong>sequence</strong>><br> <xsd:<strong>element name="</strong>nom" <strong>type="</strong>xsd:<strong>string</strong>"/><br> <xsd:<strong>element name</strong>="book" <strong>type="</strong>typeLivre" <strong>minOccurs="</strong>0"/><br> </xsd:<strong>sequence</strong>><br> </xsd:<strong>complexType</strong>> <br> <br> <xsd<strong>:complexType name="</strong>typeLivre"><br> <xsd:<strong>sequence</strong>><br> <xsd:<strong>element name</strong>="titre<strong>" type="</strong>xsd:<strong>string"/><br> <</strong>xsd<strong>:element name="</strong>auteur" <strong>type="</strong>xsd<strong>:string"/><br> </strong> </xsd:<strong>sequence</strong>><br> <strong> <</strong>xsd<strong>:attribute name="</strong>isbn<strong>" type="</strong>typeISBN"<strong>/><br> </</strong>xsd<strong>:complexType><br> <br> <</strong>xsd<strong>:simpleType name="</strong>typeISBN<strong>"><br> <</strong>xsd<strong>:restriction base="</strong>xsd<strong>:string"><br> <</strong>xsd<strong>:pattern value="</strong>\[0-9]{3}[-][0-9]{3}[-][0-9]{3}<strong>"/><br> </</strong>xsd<strong>:restriction><br> </</strong>xsd<strong>:simpleType><br> </strong><strong><br> </</strong>xsd<strong>:schema></strong>