Chapitre3 XMLetXSL
Chapitre3 XMLetXSL
Chapitre3 XMLetXSL
♦ Il contient :
1- Une déclaration XML qui précède tout autre balise XML :
<?xml version="..." [encoding="…"] [standalone="yes|no"] ?>
▪ L’attribut version indique la conformité du document à une version de la
norme XML
▪ L’attribut encoding indique le jeu de caractères utilisé. Par défaut, sa valeur
est UTF-8
▪ L’attribut standalone indique la présence ou non de références externes. Si la
valeur de cette attribut est "yes", l'analyseur produit une erreur si le document
fait référence à une DTD externe ou à des entités externes. La valeur par défaut
est "no". Dans ce cas l'analyseur XML acceptera des ressources externes
éventuelles sans produire d'erreur.
♦ Ils ne peuvent pas contenir la chaîne '--' et ne peuvent pas être imbriqués.
<program>
<![CDATA[if(k<20 & k>0) return k;]]> correct
</program>
25/12/2023 Prof. Hafida ZROURI 13
Document bien formé et valide
♦ Un document est dit "bien formé" s’il respecte la syntaxe XML :
▪ Le document doit contenir un et un seul élément racine
▪ Toutes les balises avec un contenu doivent être fermées
▪ Toutes les balises sans contenu doivent se terminer par les caractères />
▪ Les balises ne doivent pas se chevaucher
▪ Les valeurs d’attributs doivent être entre guillemets ou apostrophes
▪ La casse doit être respectée pour toutes les occurrences de noms de balise
♦ Un document XML est dit "valide" s’il possède une DTD (ou un schéma
XML) et si sa syntaxe est conforme aux règles de la DTD (ou du schéma
XML). Un document "valide" est obligatoirement "bien formé".
♦ La DTD peut être interne, externe ou mixte. Elle est interne si elle est
directement incluse dans le document. Elle est externe si le document
contient seulement une référence vers un autre document contenant la
DTD. Elle est finalement mixte si elle est constituée d'une partie interne
et d'une partie externe.
♦ Un espace de noms est identifié par un URI (Uniform Ressource Identifier). Cet
URI est très souvent une URL mais il est sans importance que l'URL pointe
réellement sur un document. Cet URI garantit seulement que l'espace de noms
soit identifié de manière unique. Dans la pratique, l'URL permet aussi souvent
d'accéder à un document qui décrit l'espace de noms.
♦ Noms qualifiés :
▪ Syntaxe : [préfixe:]nom
▪ Un nom qualifié est un nom d'élément ou d'attribut associé à un espace de noms.
Il existe trois types possibles de noms qualifiés :
- les noms d'élément sans préfixe contenus dans la portée d'une
déclaration d'espace de noms par défaut ;
- les noms d'élément préfixés ;
- les noms d'attribut préfixés.
25/12/2023 Prof. Hafida ZROURI 40
Techniques d'affichage d'un fichier
XML dans un navigateur
♦ Les balises XML ne sont pas interprétables par les navigateurs (balises non
prédéfinies). Si on affiche le contenu d’un fichier XML à partir d'un navigateur
on obtiendra le contenu du fichier lui même avec les balises.
Exemple :
♦ Pour afficher les données d’un fichier XML dans un navigateur Web, il existe deux
possibilités :
▪ Faire appel à une feuille de style CSS classique
▪ Faire appel à une feuille de style extensible XSL
25/12/2023 Prof. Hafida ZROURI 41
Afficher le XML avec CSS
♦ Pour afficher les balises XML, on peut faire appel aux feuilles de style CSS. Pour chaque
balise dans le fichier XML, un élément de style va être intégré pour l’affichage par le
navigateur.
♦ Pour que le fichier XML puisse faire appel à la feuille de style CSS, il suffit de rajouter la
ligne suivante dans le prologue du fichier XML :
<?xml-stylesheet href="nomDuFichier.css" ?>
♦ Exemple : Nous allons afficher le fichier annuaire.xml en faisant appel à la feuille de style
annuaire.css ci-dessous :
annuaire {}
personne { display: block;
margin-top: 6px; }
nom, prenom, telephone { display: inline;
font-family: Arial;
font-size: 13pt; }
nom { padding-left: 12pt;
font-weight: bold; }
telephone { background-color: lightblue; }
25/12/2023 Prof. Hafida ZROURI 42
Afficher le XML avec CSS
Le fichier annuaire.xml : L’affichage de annuaire.xml
dans un navigateur donne :
<?xml version="1.0"?>
<?xml-stylesheet href="annuaire.css" ?>
<annuaire>
<personne>
<nom> Zrouri </nom>
<prenom> Mohamed </prenom>
<telephone> 0684566695 </telephone>
</personne>
<personne>
<nom> Boularcha </nom>
<prenom> Malika </prenom>
<telephone> 0612345678 </telephone>
</personne>
…
</annuaire>
♦ Pour afficher une donnée XML dans un navigateur, il faut franchir trois étapes :
1- Aller chercher cette donnée.
2- Transformer cette donnée XML vers le format d’un langage de présentation.
3- Construire le langage de présentation en incluant cette donnée.
L’étape 1 est effectuée par XPath (langage d’adressage), l’étape 2 par XSLT
(langage de transformation) et l’étape 3 par XHTML (ou HTML).
♦ Remarque : Les langages XSLT (XSL Transform) et XPath sont contenus dans le
langage XSL. Nous identifions par la suite ces deux langages (XSLT et XPath)
sous le vocable générale XSL.
♦ Syntaxe :
<xsl:template match="…" >
…
<xsl:apply-templates [select="chemin"] />
…
</xsl:template>
Chaque ligne comporte les données d’une personne. Pour afficher toutes les
lignes du tableau nous utilisons une boucle avec la balise <xsl:for-each> (voir
le script annuaire.xsl).
♦ La principale différence entre une variable et un paramètre est qu’un paramètre (ou
plusieurs paramètres) peut être passé comme argument à un xsl:call-template ou
xsl:apply-templates. Cela se fait de la manière suivante :
<xsl:with-param name="nomParametre" select="valeurParametre" />
Ou <xsl:with-param name="nomParametre"> valeurParametre</xsl:with-param>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="couleur">green</xsl:param>
<xsl:template match="/">
<html> <head><title> Exemple </title></head>
<body>
<h2 style="text-decoration:underline; color:{$couleur}">Annuaire</h2>
<xsl:apply-templates select="annuaire/personne[2]">
<!-- Valeur du paramètre pour l'appel -->
<xsl:with-param name="taille" select="'1.6em'"/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="personne">
<!-- Déclaration du paramètre avec '10px' comme valeur par défaut -->
<xsl:param name="taille" select="'10px'" />
<p style="font-size:{$taille};color:{$couleur}"><xsl:value-of select="."/></p>
</xsl:template></xsl:stylesheet>
25/12/2023 Prof. Hafida ZROURI 77
XSL : Création d’éléments
♦ Un élément (non-XSLT) qui apparaît dans une règle modèle (template) crée un
élément de même nom et avec les mêmes attributs (sauf attributs XSLT) dans
l'arbre résultat. On peut aussi créer des éléments dont le nom est engendré à
l'exécution, avec l'instruction xsl:element.
♦ Syntaxe :
<xsl:element name="nomElément" [namespace="URI de l’espace de noms"]>
…
</xsl:element>
♦ Exemple 1:
<xsl:element name="p">
<xsl:value-of select="nom" />
</xsl:element>
→ permet de créer dans le fichier de sortie HTML un élément de paragraphe
renfermant le contenu de l'élément nom du document XML.
Nous obtenons le même résultat avec : <p><xsl:value-of select="nom" /></p>
<xsl:template match="telephone">
<xsl:element name="{@type}">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>