Académique Documents
Professionnel Documents
Culture Documents
Examen XML
— Master d’Ingénierie Informatique —
Janvier 2017, 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. Tous les appareils électroniques y compris les montres
sont interdits. b) Donner une DTD équivalente qui valide les mêmes documents que ce schéma.
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.
1 2
◮ Exercice 4 On considère le document XML suivant. c) 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"?> <?xml version="1.0" encoding="utf-8"?>
<ts> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<t id="t1">T1</t> <xsl:key name="key" match="t" use="@id"/>
<t id="t2" ref="t1">T2</t> <xsl:template match="/|*|text()">
<t id="t3" ref="t2">T3</t> <xsl:copy>
</ts> <xsl:apply-templates select="node()"/>
</xsl:copy>
a) Donner le résultat de l’application de la feuille de style XSLT suivante au document précédent. </xsl:template>
<?xml version="1.0" encoding="utf-8"?> <xsl:template match="t[@ref]">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:apply-templates select="key(’key’,@ref)"/>
<xsl:key name="key" match="t" use="@id"/> </xsl:template>
<xsl:template match="/|*|text()"> </xsl:stylesheet>
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
d) On considère le schéma suivant pour le document précédent. Compléter le pour que les deux
attributs id et ref soient bien déclarés comme identifiant et référence.
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="ts">
b) Donner le résultat de l’application de la feuille de style XSLT suivante au document précédent. <xsd:complexType>
<?xml version="1.0" encoding="utf-8"?> <xsd:sequence>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsd:element name="t" minOccurs="0" maxOccurs="unbounded">
<xsl:key name="key" match="t" use="@id"/> <xsd:complexType>
<xsl:template match="/|*|text()"> <xsd:simpleContent>
<xsl:copy> <xsd:extension base="xsd:string">
<xsl:apply-templates select="node()"/> <xsd:attribute name="id" type="xsd:string"/>
</xsl:copy> <xsd:attribute name="ref" type="xsd:string"/>
</xsl:template> </xsd:extension>
<xsl:template match="t[@ref]"> </xsd:simpleContent>
<xsl:copy-of select="key(’key’,@ref)"/> </xsd:complexType>
</xsl:template> </xsd:element>
</xsl:stylesheet> </xsd:sequence>
</xsd:complexType>
<!-- A compléter ICI -->
</xsd:element>
</xsd:schema>
3 4