Variable

XSLT permet de définir des variables globales et locales (définit dans le corps d'un modèle).

syntaxe

<xsl:variable name="long" select="10"/> 
<xsl:value-of select="@long">


1
Définir une variable contenant la liste des personnages d'une scène de thêatre

Sortie html



Remarque

XSLT ne dispose pas de variable dont la valeur varie. Les conséquences sont nombreuses : il faut simuler le comportement des boucles for, while et l'utilisation de la récursivité est nécessaire.
Ainsi, pour le calcul de la valeur max dans une liste, il est impossible d'enregistrer lors du parcourt de la liste la valeur la plus élevée dans une variable.

solutions


debut
if

<xsl:if> s'apparente au if des langages de programmation

syntaxe

<xsl:if test=" "> </xsl:if> 


1
Reprendre la feuille de style précédente pour rendre le résultat sous forme de liste, chaque élément séparé par une virgule.

Sortie html




solutions

debut
Template apply-templates

Emploi

Le traitement basé sur les règles est caractéristique de la manière dont les feuilles de styles XSLT sont écrites.

Chaque règle décrit comment un type d'élément sera traité.
On parle de langage déclaratif : on spécifie la sortie à produire pour un motif particulier ("traitement poussé").

syntaxe

<xsl:template match="/">
1

Créer une feuille de style qui affiche les données sous la forme suivante  sortie htm

Créer une feuille de style affichant les données sous la forme suivante

sortie htmCréer une feuille de style affichant les deux vues précédentes en une, on importera la première feuille.

sortie htm

remarque :

L'utilisation des modes permet de traiter le même contenu de plusieurs manière (création d'une table des matière, affichage du texte, ...).

1

Créer une feuille de style qui affiche les données dans un tableau.

sortie htmOn utilisera l'élément <xsl:number> pour la numérotation des livres.

Modifier le code pour faire apparaître le prix puis le titre et enfin l'auteur.sortie htm

1

Créer une feuille de style qui transforme le fichier d'entrée de façon que tous les attributs du fichier source soient convertis en élément dans le fichier de sortie.

On notera que <xsl:element name="{name()}"> crée un élément portant le nom d'un attribut ou d'un élément.

sortie xml

1
Compléter l'exemple de la feuille "if" pour obtenir la présentation de la feuille sous la forme suivante.

sortie htm



debut

solutions

call-template

Emploi

L'instruction <xsl:call-template> appelle un modèle nommé. Son utilisation n'est pas sans rapeller les procédures dans d'autres langages de programmation. Le passage de paramètres est géré avec <xsl:with-param>

syntaxe

<xsl: call-template match="">
1
Une utilisation de call-template est la mise en place de la récursivité.
Mettre au point une feuille de style qui permet de donner la tirade la plus longue d'une scène.

Mise en place de la récursivité : Algo


La valeur maximale de l'ensemble des tirades est soit la première soit la plus longue tirade dans l'ensemble des tirades qui suivent.
- Le modèle commence par tester si l'ensemble de noeuds (les tirades) n'est pas vide.
S'il ne l'est pas, on calcule la valeur.
- On appelle le modèle de façon récursive en transmettant tous les noeuds sauf le premier, pour calculer la valeur max du reste.
- On renvoie la plus grande valeur de ces deux valeurs (de la première réplique et du reste des répliques).
-Si la liste est vide, on renvoie Zéro. Il est important de ne pas oublier ce test de fin de récursivité.

Sortie Html

debut
Sort

Emploi

L'élément sort permet de définir une clé de tri pour le contexte courant.

 <xsl:sort select="."/>
1
Mettre au point une feuille de style permettant d'obtenir les différentes informations triées.
On utilisera l'option d'attribut data-type.
noter : le résultat du tri des valeurs 120 52 donne des résultats différents suivant que data-type="text" ou data-type="number"

Sortie text

debut

solutions

for-each

Cette instruction permet d'effectue le même traitement pour chaque noeud. Elle permet le changement du noeud courant.
Elle offre une alternative à <xsl:apply-templates>.

On parle de traitement "tiré" qui généralement rend la logique du traitement plus clair.

1
Créer une feuille permettant de visualiser les chemins Xpath d'un document XML.

Sortie html

debut

solutions

number

L'élément number alloue un numéro séquentiel au noeud courant. C'est l'élément de choix pour la mise en place de sommaire.

<xsl:number> remplacera avantageusement l'usage suivant :

<h1> <xsl:value-of select="count(preceding-sibling::titre1)+1"/> </h1> 

1
Créer une feuille permettant de numéro les lignes d'un poème et les numéros de ligne dans chaque paragraphe.

Sortie html

1
Créer une feuille qui numérote toutes les sessions d'un document sans tenir compte des niveaux de section.

Sortie txt

1
Créer une feuille qui numérote toutes les sessions d'un document par niveau de section.

Sortie txt

1
Créer une feuille qui donne le sommaire d'un document.

Sortie txt

1
Créer une feuille qui donne le sommaire puis le texte d'un document.

Sortie txt

debut

solutions