Nous avons expliqué comment écrire un document xml bien formé, comment vérifier si ce document est valide ou non , soit selon des règles écrites dans un document DTD ou dans un schéma xml. Puis , nous avons met l’accent sur le langage de requête XPATH : le rôle d’une expression xpath , comment lire et écrire une expression xpath. Cette partie va concerner le langage XSLT (Extensible Stylesheet Language Transformations) : comment créer une feuille de style .xslt. Pourquoi faire?
XSLT : Définition
XSLT est un standard du W3C depuis 1999 .C’est une technologie qui permet de transformer les informations d’un document XML vers un autre type de document (XML, XHTML/HTML, CSV…). Le principe de fonctionnement : un document XSLT est associé à un document XML afin de créer un nouveau document d’une nature différente ou identique.
Structure de base :
Une feuille de style XSLT est un document xml (avec extension “.xsl”) séparé qui contient des règles de transformation. Elle doit suivre la syntaxe globale ci-dessous :
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output …. /> <!-- template --> </xsl:stylesheet>
Référencement :
XSLT :output
Exemple :
Le squelette d’un document XSLT effectuant une transformation vers un document XHTML/HTML serait donc, par exemple, sous cette forme :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <html> <body>...</body> </html> </xsl:template> </xsl:stylesheet>
On vous propose une vidéo qui explique en Darija Marocaine cette partie de cours :
XSLT : Les fonctions
Ces fonctions vont nous permettre d’exploiter les données sélectionnées par nos templates afin de procéder à des transformations plus ou moins complexes.
- value-of : Extraire la valeur d’un élément XML ou la valeur de ses attributs
<xsl:value-of select="expression XPath" />Exemple :
<xsl:value-of select="personne/@sexe" /> <xsl:value-of select="personne[1]/prenom" />
- for-each : Créer une boucler sur un ensemble d’éléments.
syntaxe :
<xsl:for-each select="expression XPath" > <!– contenu -->
</xsl:for-each>
Exemple :
<xsl:for-each select="//personne"> <p><xsl:value-of select="prenom" /> </p> </xsl:for-each>
- sort :Trier en ordre croissant ou décroissant
syntaxe :
<xsl:sort select="expression XPath" />
Exemple :
<xsl:for-each select="//personne"> <xsl:sort select="prenom"/> <p><xsl:value-of select="prenom" /> </p> </xsl:for-each>
- Order: ascending (croissant), descending (décroissant)
- Case-order: upper-first (les majuscules d’abord), lower-first (les minuscules d’abord)
- Data-type : text (texte) et number (numérique)
- Lang : code d’une langue (fr, en, it, etc.)
- If : Conditionner une transformation
Opérateurs de comparaison: = , not (a = b), < pour inférieur, > pour supérieur
syntaxe :
<xsl:if test="condition" ></xsl:if>
Exemple :
<xsl:if test="@sexe='H'" ><xsl:value-of select="nom" /></xsl:if>
- Choose : Traiter des cas (plusieurs conditions)
syntaxe :
<xsl:choose> <xsl:when test="test de comparaison"> <!-- suite de la transformation --> </xsl:when> <xsl:when test="test de comparaison"> <!-- suite de la transformation --> </xsl:when> <xsl:otherwise> <!-- suite de la transformation --> </xsl:otherwise> </xsl:choose>
Exemple :
<xsl:choose> <xsl:when test="nom=ALAMI"><p>Bonjour</p></xsl:when> <xsl:when test ="nom=ALAOUI"> <p>Bonsoir</p></xsl:when> <xsl:otherwise> <p>Rien à dire</p></xsl:otherwise> </xsl:choose>
- apply-templates : permet de continuer la transformation des éléments enfants d’un template
syntaxe :
<xsl:apply-templates select="expression XPATH" />
Exemple :
<xsl:template match="/"> <xsl:apply-templates select="//personne" /> </xsl:template> <xsl:template match="nom"> <p><xsl:value-of select="."/></p> </xsl:template> <xsl:template match="prenom"> <p><xsl:value-of select="."/></p> </xsl:template>
Exemple : test sur l’éditeur en line de w3schools (https://www.w3schools.com/xml/tryxslt.asp?mlfile=cdcatalog&xsltfile=cdcatalog)
Exemple 2 :
Voilà une vidéo qui concerne les fonctions traitée ci-dessus :
Très bien !! vous pouvez maintenant passer au premier tp sur les feuilles xslt : TP 1 en xslt
Vous pouvez suivre notre cours complet d’XML . Il vous aide à approfondir vos compétences sur la création et la manipulation des documents xml, dtd, xsd,xpath, xslt.
Aussi, vous avez une playlist des vidéos (Explication en Darija arabe marocaine) bien organisée (avec des corrections des examens) : XML et ses variants.