Transformation XSL
Template sur un attribut
<xsl:template match="@att">
Selection d'un attribut
<xsl:apply-templates select="elt/@att" /> <xsl:apply-templates select="@class" />
Sélection d'un élément parent
<xsl:value-of select="../elementParent" />
Test simple (if)
<xsl:if test="expression"> <xsl:value-of select="." /> </xsl:if>
Vérifier si un élément est renseigné
<xsl:if test="element != ''">
Compter le nombre d'enfants d'un élément
<xsl:if test="count(child::*) = 0">
Test if-else
<xsl:choose> <xsl:when test="expression"> ... some output ... </xsl:when> <xsl:otherwise> ... some output .... </xsl:otherwise> </xsl:choose>
A noter qu'il est possible de rajouter autant de conditions when que nécessaires.
Griser une ligne sur 2
<xsl:value-of select="count(preceding-sibling::resultat) mod(2)" />
Quelques exemples complexes
count(../preceding-sibling::donnees) ../../following-sibling::evolution[1]/child::donnees[last()]/poids ../preceding-sibling::donnees[1]/poids
Gestion des schémas
Si le xml que vous voulez transformez contient une déclaration du schéma comme
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns="http://url/to/schema/version" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://url/to/schema/version http://url/to/schema/version.xsd">
Il faut déclarer ce schéma dans l'entête du fichier xsl
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:root="http://url/to/schema/version" >Puis l'utiliser
<xsl:apply-templates select="root:myElement" />