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" />

Liens