Je voudrais pouvoir compter des éléments d'un document XML pour faire des traitements variés avec XSLT?
Eric van der Vlist,
Dyomedea (vdv@dyomedea.com).
lundi 8 janvier 2001
Par exemple, s'il y a 50 éléments <INTERESSANT> dans mon document XML, quelque soit leur position, je voudrais pouvoir afficher dans le fichier généré "Il y a 50 choses intéressantes".
Autre exemple, je voudrais pouvoir mettre en bleu les dix premiers, en vert les 10 suivants, et ainsi de suite.
Pour compter le nombre d'éléments "<INTERESSANT>" dans un document, il suffit d'utiliser la fonction XPath "count()" et d'écrire:
count(//INTERESSANT)
Pour faire un traitement spécifique sur les dix premiers éléments, la manière la plus simple -mais elle indique la position contextuelle et n'est applicable que si votre liste de noeuds courante correspond aux éléments que vous comptez- est d'utiliser la fonction "position()".
Si par exemple vous effectuez une sélection sur les noeuds "<INTERESSANT>" :
<xsl:apply-templates select="//INTERESSANT"...
Vous pourrez écrire:
<xsl:template match="INTERESSANT[position() < 11]"> ...
Si vous ne pouvez pas utiliser la fonction position() (parce que vous vous intéressez à la position dans le document et non à la position contextuelle), vous devrez utiliser la fonction count() pour compter les éléments "INTERESSANT" précédant le noeud courant dans le document en utilisant l'axe "preceding" :
<xsl:template match="count(preceding::INTERESSANT") < 10> ...
[xml-tech] xslt : compter des elements[xml-tech] Re: xslt : compter des elements[xml-tech] position()[xml-tech] Re: position()[xml-tech] Re: position()[xml-tech] Re: position()
Copyright 2001,
Eric van der Vlist.
|