Université Rabelais de Tours lois
UFR Sciences et Techniques
XML
Interro non notée – documents non autorisés
1. Documents XML
Voilà un document XML avec 5 erreurs de syntaxe. Entourez-les et proposez une correction. Dessinez
l’arbre.
2. Documents et schémas
a) Proposer un document valide (texte ou arbre) par rapport au schéma ci-dessous (avec valeurs
inventées). A quel espace de nom est associé ce schéma ?
<journal> comme racine, avec un attribut « titre », et en dessous une liste éventuellement vide d’éléments
« article » suivie d’une liste éventuellement vide d’éléments « journaliste ». Un élément article se compose
d’un sous-élément « titre » suivi d’un élément « pages » contenant au moins un élément « pageNum »
dont la valeur est un entier entre 1 et 99. Un élément « journaliste » contient un sous élément « nom » et
un attribut « description ». Mais le document suivant est en lui-même valide : <journal
titre="monJournal"/>
Ce schéma est associé à l’espace de nom [Link]
b) Ecrire une DTD qui corresponde au mieux au schéma ci-dessous.
<xsd:schema targetNamespace="[Link]
xmlns:xsd="[Link]
<xsd:element name="journal" type="JournalType"/>
<xsd:complexType name="JournalType">
<xsd:sequence>
<xsd:element name="article" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="pages">
<xsd:complexType>
1/3
<xsd:element name="page" minOccurs="0" maxOccurs="unbounded">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:maxExclusive value="100"/>
<xsd:minExclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:complexType>
</xsd:element>
<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="resume" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="href" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="journaliste" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:element name="nom" type="xsd:string"/>
<xsd:attribute name="description" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="titre" type="xsd:string"/>
</xsd:complexType>
</xsd:schema>
< !ELEMENT journal (article*, journaliste*) >
< !ATTLIST journal titre CDATA #REQUIRED >
< !ELEMENT article (titre, pages, auteur, resume) >
< !ATTLIST article href CDATA #REQUIRED >
< !ELEMENT journaliste (nom) >
< !ATTLIST journaliste description CDATA #REQUIRED >
< !ELEMENT pages (pagenum+) >
< !ELEMENT titre (#PCDATA) >
< !ELEMENT auteur (#PCDATA) >
< !ELEMENT resume (#PCDATA) >
< !ELEMENT nom (#PCDATA) >
< !ELEMENT pagenum (#PCDATA) >
Rappels de syntaxe pour DTD :
< !ELEMENT nomElement contenu >
contenu : (#PCDATA) ou ANY ou EMPTY ou (expression régulière)
symboles de l’expression régulière : , | ? * +
< !ATTLIST nomElement nomAttribut type obligation défaut>
type : CDATA ou ID ou IDREF ou IDREFS ou énumération de valeurs (a | b)
obligation : #REQUIRED ou #IMPLIED ou #FIXED
défaut : utilisé avec #IMPLIED ou #FIXED, définit une valeur par défaut
< !ENTITY nomEntité "valeurEntité">
utilisation : &nomEntité; (remplacé par valeurEntité)
3. Documents XML
Concernant l’extrait de document suivant :
1) Expliquez à quoi sert la partie introduite par DOCTYPE. Indiquez où on utilise plus loin dans le
fichier ce qui est déclaré dans DOCTYPE.
2/3
DOCTYPE sert à déclarer une DTD associée au document XML. Ici dans cette DTD il n’y a que deux
déclarations d’entités, la première associe le mot « humans » à l’URL
[Link] et la deuxième associe le mot « xsd » à l’URL
[Link]
2) Quels sont les quatre espaces de noms utilisés ?
[Link] avec le préfixe rdf
[Link] avec le préfixe rdfs
[Link] avec le préfixe xsd
[Link] pour tout ce qui est sans préfixe
3) A quel espace de noms appartient la balise <name> ?
[Link]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rdf:RDF [
<!ENTITY humans "[Link]
<!ENTITY xsd "[Link] ]>
<rdf:RDF xmlns:rdf ="[Link]
xmlns:rdfs="[Link]
xmlns:xsd ="&xsd;"
xmlns ="&humans;#"
xml:base ="&humans;-instances" >
<Man rdf:ID="Harry">
<name>Harry</name>
<hasChild rdf:resource="#John"/>
</Man>
</rdf:RDF>
3/3