Académique Documents
Professionnel Documents
Culture Documents
Licence Informatique L3
Option XML
Examen
Soit le document options.xml, qui présente des informations sur des cours optionnels et les
étudiants qui les suivent. Un extrait de ce fichier est présenté ici :
<options>
<cours id="c1" titre="XML">
<responsable>D. Vodislav</responsable>
<description>Ce cours permet de <objectif>découvrir le format XML</objectif> et
<objectif>maitriser les langages liés à XML</objectif>. Prérequis : <prérequis>
programmation Java</prérequis> et <prérequis>HTML</prérequis></description>
<séance no="1" date="20/09/2019">XML : les bases</séance>
...
</cours>
<cours id="c2" titre="Developing mobile applications">
<responsable>D. Kotzinos</responsable>
<description>...</description>
<séance no="1" date="20/09/2019">Introduction</séance>
...
<remarque>Enseignement en anglais</remarque>
</cours>
...
<étudiant numéro="n123456">
<nom>Philippe Dupont</nom>
<option cours="c1" note="14"/>
...
<absence type="justifiée">27/09/2019</absence>
...
</étudiant>
...
</options>
options
* *
cours étudiant
? *
* *
@id @titre responsable description séance remarque @numéro nom option absence
2. (3 pts) Décrivez en XML Schema l’élément étudiant et tous les éléments inclus.
Déclarez la clé de cours et les éventuelles clés étrangères qui y font référence.
<xsd:element name="étudiant" type="étudiantType"/>
<xsd:complexType name="étudiantType">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="option" type="optionType"
maxOccurs="unbounded"/>
<xsd:element name="absence" type="absenceType" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="numéro" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="optionType">
<xsd:attribute name="cours" type="xsd:string" use="required"/>
<xsd:attribute name="note" type="xsd:float" use="required"/>
</xsd:complexType>
<xsd:complexType name="absenceType">
<xsd:simpleContent>
<xsd:extension base='xsd:date'>
<xsd:attribute name='type' type='xsd:string'/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsl:template match="/">
<html>
<head><title>Options</titre></head>
<body><xsl:apply-templates select="options/cours"/></body>
</html>
</xsl:template>
<xsl:template match="cours">
<p><b><xsl:value-of select="@titre"/></b>
<xsl:text>: responsable </xsl:text>
<xsl:value-of select="responsable"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="count(//étudiant[option/@cours=current()/@id])"/>
<xsl:text> étudiants</xsl:text>
<ol><xsl:apply-templates select="séance"/></ol>
</p>
</xsl:template>
<xsl:template match="séance">
<li><i><xsl:value-of select="."/></i>
<xsl:text> (</xsl:text>
<xsl:value-of select="@date"/>)
</li>
</xsl:template>
</xsl:stylesheet>
9. (2 pts) Ecrivez une feuille XSLT qui produit une copie du document options.xml, dans
laquelle on élimine les balises description et on remplace l’attribut cours de
l’option par le titre de cours en texte (par exemple <option cours="c1"
note="14"/> devient <option note="14">XML</option>)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="description"/>
<xsl:template match="@cours">
<xsl:value-of select="//cours[@id=current()]/@titre"/>
</xsl:template>
</xsl:stylesheet>