Professional Documents
Culture Documents
Le but de ce TD est d'écrire des schémas XML d'un document XML existant.
Préliminaires
L'objectif du TP est de faire un schéma XML qui valide les fichiers de filmographie (par exemple
bergman-flm.xml). Pour valider le document avec votre grammaire bergman.xsd, taper la
commande:
<?xml version="1.0"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.geocities.com/Hollywood/Hills/2440/"
xmlns:f="http://www.geocities.com/Hollywood/Hills/2440/">
<s:element name="filmographie">
<s:complexType>
<s:sequence>
<s:element ref="f:resumes"/>
<s:element ref="f:aliases"/>
<s:element ref="f:perso"/>
<s:element ref="f:roles"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="resumes">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" ref="f:resume"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="resume"/>
<s:element name="aliases">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" ref="f:alias"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="alias"/>
<s:element name="perso"/>
<s:element name="roles">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" ref="f:role"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="role"/>
</s:schema>
Définir un alias comme contenant du texte et les attributs filmref, pays et date. Les attributs
filmref et date sont obligatoires.
Forcer date à être un nombre de 4 chiffres, qui commence par 1 ou 2. Déclarer cet attribut
de la manière suivante :
<s:attribute name="date">
<s:simpleType>
...
</simpleType>
<s:attribute name="date">
L'attribut filmref doit comporter au moins deux caractères, le premier caractère étant 'f' et les
suivants représentant un entier.
L'élément resume peut contenir un mélange de texte et d'éléments (exemple : le film d'Anthony
Asquith).
Faire en sorte de spécifier resume sans avoir à définir les éléments qu'il peut contenir. Indication
: utiliser la balise any avec l'attribut processContents.
Définir l'élément perso comme une séquence d'éléments qui apparaissent dans n'importe
quel ordre, mais qui doivent tous apparaître une fois.
Définir l'élément biographie comme suit : cet élément contient des éléments p qui
eux-mêmes mélangent du texte et des balises. Indication : ces éléments p peuvent contenir
des éléments citation.
Définir mariages comme un ensemble d'éléments mariage. L'élément mariage aura un
attribut obligatoire : debut qui est une année. Il aura aussi deux attributs optionnels : fin
qui est une année et conclusion qui ne peut prendre que deux valeurs, 'divorce' et 'mort'.
<?xml version="1.0"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.geocities.com/Hollywood/Hills/2440/"
xmlns:f="http://www.geocities.com/Hollywood/Hills/2440/">
<s:element name="filmographie">
<s:complexType>
<s:sequence>
<s:element ref="f:resumes"/>
<s:element ref="f:aliases"/>
<s:element ref="f:perso"/>
<s:element ref="f:roles"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="resumes">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" ref="f:resume"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="resume">
<s:complexType mixed="true">
<s:sequence>
<s:any minOccurs="0" processContents="skip"/>
</s:sequence>
<s:attribute name="realisateur" type="s:string"/>
<s:attribute name="filmref" type="s:NCName"/>
<s:attribute name="img" type="s:NMTOKEN"/>
<s:attribute name="pdf" type="s:NMTOKEN"/>
</s:complexType>
</s:element>
<s:element name="aliases">
<s:complexType>
<s:sequence>
<s:element ref="f:i"/>
<s:element ref="f:citation"/>
</s:choice>
</s:complexType>
</s:element>
<s:element name="i"/>
<s:element name="citation"/>
<s:element name="mariages">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" ref="f:mariage"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="mariage">
<s:complexType>
<s:simpleContent>
<s:extension base="s:string">
<s:attribute name="debut" use="required">
<s:simpleType>
<s:restriction base="s:integer">
<s:pattern value="[12][0-9][0-9][0-9]"/>
</s:restriction>
</s:simpleType>
</s:attribute>
<s:attribute name="fin">
<s:simpleType>
<s:restriction base="s:integer">
<s:pattern value="[12][0-9][0-9][0-9]"/>
</s:restriction>
</s:simpleType>
</s:attribute>
<s:attribute name="conclusion">
<s:simpleType>
<s:restriction base="s:token">
<s:enumeration value="divorce"/>
<s:enumeration value="mort"/>
</s:restriction>
</s:simpleType>
</s:attribute>
</s:extension>
</s:simpleContent>
</s:complexType>
</s:element>
<s:element name="infos"/>
<s:element name="citations"/>
<s:element name="roles">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" ref="f:role"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="role">
<s:complexType>
<s:simpleContent>
<s:extension base="s:string">
<s:attribute name="personnage" type="s:string"/>
<s:attribute name="misc" type="s:string"/>
<s:attribute name="filmref" use="required">
<s:simpleType>
<s:restriction base="s:NCName">
<s:pattern value="f[1-9][0-9]*"/>
</s:restriction>
</s:simpleType>
</s:attribute>
<s:attribute name="date" use="required">
<s:simpleType>
<s:restriction base="s:gYear">
<s:pattern value="[12][0-9][0-9][0-9]"/>
</s:restriction>
</s:simpleType>
</s:attribute>
</s:extension>
</s:simpleContent>
</s:complexType>
</s:element>
</s:schema>
© Université de Marne-la-Vallée