Examen XML

Transcription

Examen XML
Nom :
No d’étudiant :
Examen XML
— Master d’Ingénierie Informatique —
Janvier 2016, durée 2h.
Les documents sont interdits à l’exception d’une feuille de memento (4 pages A4). L’examen
est composé de quatre exercices indépendants. Les appareils électroniques sont interdits.
Les réponses aux questions doivent directement être écrites dans les cadres du sujet. Tout ce
qui est écrit en dehors des cadres n’est pas pris en compte pour l’évaluation.
◮ Exercice 1 On considère les deux DTD suivantes.
<!-- DTD 1 -->
<!ELEMENT root (a, b?)+>
<!ELEMENT a EMPTY>
<!ELEMENT b EMPTY>
<!-- DTD 2 -->
<!ELEMENT root ((a,b) | b)+>
<!ELEMENT a (#PCDATA)>
<!ELEMENT b (#PCDATA)>
a) Donner un document qui soit valide pour la première DTD mais qui ne soit pas valide pour la
seconde DTD. L’élément root doit contenir au moins trois éléments.
b) Donner un document qui soit valide pour la seconde DTD mais qui ne soit pas valide pour la
première DTD. L’élément root doit contenir au moins trois éléments.
◮ Exercice 2 On considère le schema XML suivant
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="I" abstract="true">
<xsd:simpleContent>
<xsd:extension base="xsd:integer">
<xsd:attribute name="sign">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="+"/>
<xsd:enumeration value="-"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="P">
<xsd:simpleContent>
<xsd:restriction base="I">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger"/>
</xsd:simpleType>
<xsd:attribute name="sign" use="prohibited"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="i" type="I" minOccurs="2" maxOccurs="3"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
a) Donner un document valide pour ce schéma
c) Donner un document qui soit valide pour les deux DTD. L’élément root doit contenir au moins
trois éléments.
b) Donner une DTD équivalente qui valide les mêmes documents que ce schéma.
1
2
◮ Exercice 3 On considère le document XML suivant.
<?xml version="1.0" encoding="utf-8"?>
<n>
<n><n>1</n><n>2</n></n>
<n><n><n>3</n></n></n>
<n>5</n><n>6</n>
</n>
a) Donner le résultat de l’application de la feuille de style XSLT suivante au document précédent.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/|n[*]">
<xsl:apply-templates select="*"/>
</xsl:template>
<xsl:template match="/n|n">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
On considère deux représentations possibles d’un graphe par un document XML. Dans les deux
représentations, chaque sommet du graphe est représenté par un éléments vertex du fichier XML.
Chaque élément vertex a un attribut id qui donne son identifiant.
Dans la première représentation, chaque arête partant de ce sommet est représentée par un
élément edge enfant de l’élément vertex. Cet élément edge a un attribut target qui donne le
sommet d’arrivée de l’arête. Dans la seconde représentation, les arêtes partant d’un sommet sont
représentées par l’attribut edges de l’élément vertex qui contient les identifiants des sommets
d’arrivée des arêtes.
La première (à gauche) et la seconde (à droite) représentation du graphe donné ci-dessus sont
les documents suivants.
<?xml version="1.0"?>
<graph>
<vertex id="v1">
<edge target="v2"/>
<edge target="v3"/>
</vertex>
<vertex id="v2">
<edge target="v3"/>
</vertex>
<vertex id="v3"/>
</graph>
<?xml version="1.0"?>
<graph>
<vertex id="v1" edges="v2 v3"/>
<vertex id="v2" edges="v3"/>
<vertex id="v3"/>
</graph>
a) Donner une feuille de style XSLT pour transformer la première représentation d’un graphe en
la seconde représentation du même graphe
b) Donner le résultat de l’application de la feuille de style XSLT suivante au document précédent.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/|n">
<xsl:copy>
<xsl:apply-templates select="node()">
<xsl:sort select="position()" order="descending" data-type="number"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
b) Donner une feuille de style XSLT pour transformer la seconde représentation d’un graphe en
la première représentation du même graphe
◮ Exercice 4 On considère des documents XML pour représenter des graphes. Les arêtes sont
matérialisés par des liens entre éléments à l’aide d’attributs de type ID, IDREF et IDREFS.
v2
v1
v3
3
4