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. 

cours xslt

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>
– Pour accéder aux éléments, attributs et fonctionnalités XSLT, nous devons déclarer l’espace de noms : “http://www.w3.org/1999/XSL/Transform” (pointe vers l’espace de noms XSLT W3C officiel) 
version = “1.0” représente la version xslt utilisée.

Référencement : 

Le référencement d’un document XSLT se fait au niveau du document XML dont les informations seront utilisées au cours de la transformation. Ce référencement se fait via une  ligne à placer sous le prologue et avant l’élément racine du document XML : 
<?xml-stylesheet type=”text/xsl” href= “mon_document.xsl” ?>
L’attribut type permet de définir le type du document que nous souhaitons référencer. Dans notre cas, il s’agit d’un document XSLT : “text/xsl”. L’attribut href permet d’indiquer l’URI du document que l’on souhaite référencer. 
Remarque : On peut associer une feuille de style XSL(T) à un (ou plusieurs) documents XML

XSLT :output 

XSLT output, qui se place sous la racine stylesheet, désigne la nature du document en sortie
 
Syntaxe:  <xsl:output method=”xml” encoding=”UTF-8″ .. />
 
 method: préciser le type du document produit à l’issue des transformations : xml, html , xhtml ou text.
 encoding: préciser l’encodage du document produit à l’issue des transformations  la balise xsl :output peut avoir d’autres attributs 
 
XSLT :template 
Un document xsl est un ensemble de templates (règles de traduction). Le contenu d’un template permet de définir les transformations à appliquer à l’ensemble des données sélectionnées par l’expression XPath qui lui est attachée. Ce contenu peut-être de différentes natures. 
 
exemple xslt

Exemple : 

exemple xslt

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
syntaxe :
<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>
Remarques: 
– généralement utilisée au sein d’une fonction <xsl:for-each /> 
– autres attributs optionnels:
  • 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 logiques: AND, OR, NOT

Opérateurs de comparaison:  =  , not (a = b),  &lt; pour inférieur, &gt; 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" />
Un simple apply-templates (sans attribut select) examine tous les
nœuds enfants dans l’ordre. Si une règle qui correspond à un
nœud est détectée, elle sera appliquée

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 xslt

Exemple 2 : 

exemple 2 xslt

 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *