0% ont trouvé ce document utile (0 vote)
30 vues19 pages

Introduction à XSLT et transformation XML

XSL (eXtensible Stylesheet Language) et XSLT (eXtensible Stylesheet Language Transformation) sont des langages utilisés pour transformer des documents XML en d'autres formats, notamment HTML. Un document XSL commence par un prologue et contient des éléments comme <xsl:stylesheet> et <xsl:template> pour définir des règles de transformation. Les instructions de contrôle, telles que <xsl:for-each>, <xsl:if>, et <xsl:choose>, permettent de gérer la logique de transformation et de conditionner l'affichage des données.

Transféré par

epspbouira
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues19 pages

Introduction à XSLT et transformation XML

XSL (eXtensible Stylesheet Language) et XSLT (eXtensible Stylesheet Language Transformation) sont des langages utilisés pour transformer des documents XML en d'autres formats, notamment HTML. Un document XSL commence par un prologue et contient des éléments comme <xsl:stylesheet> et <xsl:template> pour définir des règles de transformation. Les instructions de contrôle, telles que <xsl:for-each>, <xsl:if>, et <xsl:choose>, permettent de gérer la logique de transformation et de conditionner l'affichage des données.

Transféré par

epspbouira
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Mise en forme à l'aide de

feuilles de style XSL


(XSLT)

1
XSL

XSL signifie eXtensive Stylesheet Langage,


ou langage extensible de feuille de style.
XSLT signifie eXtensible Stylesheet
Langage Transformation.

2
XSL

XSL est un:


- Un langage de feuille de style.
- Un très puissant manipulateur d'éléments.
- Il permet de transformer un document
XML source en un autre, permettant ainsi,
à l'extrême, d'en bouleverser la structure.

3
XSL
Pourquoi transformer ?

1. visualiser ces données du


document Xml
2. créer un nouveau
document visualisable (par
exemple au format HTML) à
partir du document XML
(arbre XML sera transformé
en arbre HTML).

4
XSL

Un fichier XSL étant un fichier XML, il doit


respecter les normes de syntaxe de ce
format.

5
Structure d'un document XSL
 La structure de base d'un document XSL commence par
un prologue, puis un élément <xsl:stylesheet pouvant
contenir quelques attributs, notamment une déclaration
d'espace de noms ainsi que le numéro de version.
 L'exemple suivant présente un document XSL :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="[Link]
version="1.0"> …

</xsl:stylesheet>

6
Structure d'un document XSL
 L'élément <xsl:stylesheet> est l'élément racine du
document XSL.
 C'est lui qui contient tous les modèles, y compris celui
qui est associé à la racine du document XML, modèle
que l'on note <xsl:template match="/">. L'attribut
match="/" indique que ce modèle s'applique à la racine
du document XML.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="[Link]
version="1.0">
<xsl:template match="/">

</xsl:template>
</xsl:stylesheet>

7
Exemple
Exemple d'un document XML lié à une feuille de style XSL simple :
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="[Link]"?>
<bouteille xmlns:xsi ="[Link]
xsi:noNamespaceSchemaLocation="[Link]">

<marque>IFRI</marque>
<composition>calcium 71mg/l, magnésium 5,5mg/l, chlorure 20mg/l,
nitrate 1mg/l, traces de fer. </composition>
<code_barre>3274080005003</code_barre>
<contenance>150cl</contenance>
<ph>7.45</ph>
<source>
<ville>IFRI</ville>
<departement> Bejaia </departement>
</source>
</bouteille>

8
Exemple
 Et voici la feuille de style XSL associée :

<?xml version="1.0" encoding="UTF-8"?>


<xsl:stylesheet version="1.0" xmlns:xsl="[Link]
<xsl:template match="/">
<html>
<head>
<title>Exemple de sortie HTML</title>
</head>
<body>
<h1>Bouteille de marque <xsl:value-of select="/bouteille/marque"/></h1>
<h2>Composition:</h2>
<p><xsl:value-of select="/bouteille/composition"/></p>
<h2>Lieu d'origine:</h2>
<p>Ville de <b><xsl:value-of select="/bouteille/source/ville"/></b>, dans le
département <b><xsl:value-of select="/bouteille/source/departement"/></b></p>
<h2>Autres informations</h2>
<ul>
<li>Contenance: <xsl:value-of select="/bouteille/contenance"/></li>
<li>pH: <xsl:value-of select="/bouteille/ph"/></li>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
9
Valeur d'une expression
Le document résultat contient deux sortes d'informations:
1. des balises + chaînes de caractères informatives (<h2>Liste des livres</h2>)
2. des données du document XML ou calculées à partir d'elles

Donc il faut un moyen d'accéder aux données du document XML


<xsl:value-of select="expression XPath" />

Cet élément :
• évalue l'expression XPath,
• convertit son résultat en une chaîne de caractères,
• intègre la chaîne de caractères dans le document résultat

Par exemple le code XSLT


<td><xsl:value-of select="./@cote"/></td>
<td><xsl:value-of select="./titre"/></td>

<td>681.321 A9-CHA</td>
<td>Programmation HTML et JavaScript</td>
10
règle
C’est quoi une "règle" en XSLT ?
En XSLT, une règle est un bloc de transformation qui décrit comment traiter un élément
XML particulier.
Cette règle est définie avec l’élément :
<xsl:template match="motif">
<!-- Ce que tu veux produire en sortie -->
</xsl:template>
Une règle en XSLT = un modèle + une action
2. L’action (le corps de la règle)
1. Le modèle (le "match") C’est ce que on veut faire ou produire quand
C’est ce qui définit à quel élément l’élément est trouvé.
XML s’applique la règle. Cela peut être :
match="élément_xml" •Afficher du texte
•Générer du HTML
<xsl:template match="produit"> •Appliquer d'autres règles
•Extraire des valeurs...
<p>
<xsl:value-of select="nom"/>
</p> 11
Définition et déclenchement de règles
Définition d'une règle
Chaque règle est définie par l'élément xsl:template

xsl:template : est utilisé pour définir des modèles de transformation.

La valeur de l'attribut match désigne les nœuds aux quels


<xsl:template match="motif">
la règle s’applique (à tous les nœuds qui satisfont au motif)
Corps de la règle
le corps (ce qu'elle fait) soit à produire un fragment du
</xsl:template>
document résultat, soit à appeler d'autres règles.

se déclenche chaque fois que les chemins sur


<xsl:template match="livre"> ... </xsl:template> lesquels elle est lancée aboutissent à un
élément livre.

<xsl:template match="/"> ... </xsl:template> se déclenche pour l'élément racine.

12
Définition et déclenchement de règles
Déclenchement des règles
<xsl:apply-templates select="expression XPath"/> Appliquer une (ou plusieurs) règle(s)

C’est une instruction qui dit au moteur :


"Applique la ou les règles (<xsl:template>) aux éléments enfants."

L'élément xsl:apply-templates déclenche toutes les règles possibles sur les nœuds
spécifiés par l'expression Xpath
déclenche des règles sur tous les
<xsl:apply-templates select="//livre"/> éléments livre du document XML.

L’élément < xsl : apply-templates > est utilisé dans la balise <xsl:template/>

Le "moteur" XSLT cherche d’abord à exécuter la première règle qu’il trouve pour l’élément
racine. Cette règle normalement fait appel à d’autres règles :
• soit implicitement : <xsl:apply-templates/> Applique toutes règles
• soit en faisant appel à des règles précises: <xsl:apply-templates select="regle"/>

Chacune des sous règles qui peuvent s’appliquer sera exécutée dans l’ordre et ainsi de suite
13
Définition et déclenchement de règles
<?xml version="1.0" encoding="UTF-8"?>
<stock> <xsl:stylesheet version="1.0"
<produit> xmlns:xsl="[Link]
<nom> Livre </nom> <xsl:template match="/stock"><!-- Règle principale : point d’entrée -->
<prix monnaie="Dinar"> 50 </prix> <html>
<comment> coment</comment> <body>
</produit> <h2>Liste des produits</h2>
<produit> <ul>
<nom> CD </nom> <xsl:apply-templates select="produit"/>
<prix monnaie="Dollar"> 23 </prix> <xsl:apply-templates/>
</produit> </ul>
</stock> </body>
</html>
</xsl:template>
<xsl:template match="produit"><!-- Règle pour chaque produit -->
Métaphore simple : <li>
<xsl:apply-templates> = Une table des
<xsl:value-of select="nom"/> :
matières qui dit : "Va lire les chapitres
suivants".
<xsl:value-of select="prix"/>
<xsl:text> </xsl:text>
<xsl:template> = Les chapitres du livre, <xsl:value-of select="prix/@monnaie"/>
chacun expliquant quelque chose. </li>
</xsl:template>
</xsl:stylesheet>
14
Autres composants du langage XSLT
Instructions de contrôle
Répétitive
La répétition s'applique successivement à chaque noeud de l'ensemble désigné
par l'expression.
<xsl:for-each select="expression"> corps de règle
</xsl:for-each>
<!-- Itération sur tous les produits -->
<xsl:for-each select="produit">
<li>
<xsl:value-of select="nom"/> : <xsl:value-of select="prix"/>
</li>
</xsl:for-each>

ou
<xsl:for-each select="produit[prix &gt; 20 and prix != 50]">

(!= (not equal); &lt; less than; &gt; greater than)

15
Autres composants du langage XSLT
Instructions de contrôle

The <xsl:sort> element is used to sort the output. Add an <xsl:sort> element inside
the <xsl:for-each> element

<xsl:for-each select="produit"> The select attribute indicates what


<xsl:sort select="prix" order="asc"/> XML element to sort on.
<li>
<xsl:value-of select="nom"/> : <xsl:value-of select="prix"/>
</li>
</xsl:for-each>

16
Autres composants du langage XSLT
Instructions de contrôle
Instruction conditionnelle
<xsl:if test="expression">
...some output if the expression is true...
</xsl:if>

To add a conditional test, add the <xsl:if> element inside the <xsl:for-each>

<xsl:for-each select="produit">
<li>
<xsl:value-of select="nom"/> : <xsl:value-of select="prix"/>
<!-- Condition pour afficher un message spécial si le prix > 20 --
>
<xsl:if test="prix &gt; 20">
<br/><strong>Ce produit coûte plus de 20 !</strong>
</xsl:if>
</li>
</xsl:for-each>

17
Autres composants du langage XSLT
Instructions de contrôle
Instruction à choix multiples
<xsl:choose>
<xsl:when test="expression">
... some output ... <xsl:for-each select="produit">
</xsl:when>
<xsl:value-of select="nom"/> : <xsl:value-of select="prix"/>
<xsl:otherwise>
... some output .... <!-- Structure conditionnelle avec xsl:choose -->
</xsl:otherwise> <xsl:choose>
</xsl:choose> <xsl:when test="prix &gt; 40">
<br/><strong>C'est un produit cher !</strong>
The <xsl:choose> element is </xsl:when>
used in conjunction with <xsl:when test="prix &gt; 20">
<xsl:when> and <br/><strong>C'est un produit de prix moyen.</strong>
<xsl:otherwise> to express </xsl:when>
multiple conditional tests. <xsl:otherwise>
<br/><strong>C'est un produit bon marché.</strong>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each
18
XSLT Examples

[Link]

19

Vous aimerez peut-être aussi