09 septembre 2005

Fonction position() en XSLT

En XSL/XSLT, nous avons besoin parfois de connaître la position des éléments que nous souhaitons afficher ou encore émettre des conditions sur certains éléments (premier, dernier...). Les applications sont diverses : pagination, mise en page correcte, ... Dans cet article nous verrons quelques exemples de base, à vous ensuite de les adapter à vos besoins.

Comment retrouver la position d'un élément?
exemple 1:
<xsl:template name="t1" match="ARTICLE">
    <xsl:value-of select ="position()"/>
</xsl:template>
Cet exemple affiche la position de l'article dans l'arborescence, simplement il est très simplifié.

exemple 2:

<xsl:template name="t1" match="ARTICLES">
<xsl:foreach select ="ARTICLE">
    ARTICLE N° : <xsl:value-of select ="position()"/><br/>
</xsl:template>
</xsl:foreach>
Cet exemple affiche pour chaque article sa position ->
ARTICLE N°1
ARTICLE N°2
...

 Comment retrouver un élément par sa position dans l'arborescence avec la fonction position()?
exemple 3 :
<xsl:value-of select ="PRODUCT[position()=1]/REF"/>
Dans cet exemple, on recherche la référence du 1er produit.

Effectuer un traitement si et seulement l'élement est à une position donnée
exemple 4 :
Reprenons l'exemple 2 et modifions-le, nous voulons afficher les articles de cette manière : article 1, article 2, .., article n. Donc on met une virgule entre chaque article et pour le dernier article on met un point. Nous devons donc tester la position de l'article.
<xsl:template name="t1" match="ARTICLES">
<xsl:foreach select ="ARTICLE">
    article <xsl:value-of select ="position()"/>
   
 <xsl:if test = "not (position()=last())">, </xsl:if>
    <xsl:if test = "position()=last()
">. </xsl:if>
</xsl:template>
</xsl:foreach>

Posté par fatihaelh à 09:42 - XML/XSL - Commentaires [1] - Permalien [#]

Commentaires

    bien expliqué. Merci.

    Posté par mnm, 15 avril 2010

Poster un commentaire