Comment calculer le nombre de Nœuds dans XSLT?

J'ai maintenant est venu à la dernière étape de ma feuille de style XSL, qui a besoin de moi à la sortie d'un nombre représentant le nombre total de nœuds ajoutés. En fait, il ne semble pas être si simple pour moi:

Tout d'abord, je ne suis pas compter les nœuds à partir de l'original du document xml, je vais compter certains noeuds du XML résultant(l'initiale du document xml peut être vide).

Deuxièmement, je ne suis pas de comptage de tous les nœuds.

Par exemple, voici un morceau de mon code XSLT:

<xsl:template name="Loop2000A">
  <Loop2000A>
<HL>
  <HL01>
    <xsl:value-of select="'1'"/>
  </HL01>
  <HL03>
    <xsl:value-of select="'20'"/>
  </HL03>
</HL>
 <xsl:if test="$recbat//provider_taxonomy_qual !='' ">
<PRV>
 <PRV01>
   <xsl:value-of select="'BI'"/>
 </PRV01>
     <PRV02>
   <xsl:value-of select="$recbat//provider_taxonomy_qual"/>
 </PRV02>
<PRV03>
   <xsl:value-of select="$recbat//provider_taxonomy"/>
</PRV03>
   </PRV>
  </xsl:if>
<xsl:call-template name="Loop2010AA"/>

Donc pour ce code, et sont appelés segments, et ceux de dollars recbat etc. sont sources de données. Donc, ce que je veux vraiment est le nombre de ces segments, et il peut à travers les différents modèles(comme "Loop2010AA" modèle ci-dessus, qui est un autre modèle), et ces segments peuvent avoir des boucles, de sorte qu'ils peuvent être créés à 3 fois consécutivement, ce qui à notre compteur doit incrémenter 3 en conséquence, ou peut-être l'instruction "if" ne parvient pas, donc pas de segment est créé, puis le compteur devrait rester la même.

Je ne suis pas sûr de la bonne façon de le mettre en œuvre, puisque la plupart du tutoriel j'ai googlé sont sur le décompte des nœuds dans l'original des documents XML. Une idée que j'ai maintenant est d'utiliser le paramètre de passage, mais je n'ai aucune idée de comment faire ce paramètre global?

Sinon, je pense à un moyen plus direct de le faire. Au lieu d'utiliser une variable de compteur, est-il possible que je peux générer la sortie xml du document, puis-je compter les noeuds que je veux dans ce xml, puis générer la VRAIE sortie avec le nombre.

Avec une feuille de style, on pourrait refactoriser le code avec un bon fonctionnelle scan modèle. Sans feuille de style, je ne peux que suggérer deux phases de transformation: sortie le tout dans une variable, puis compter les noeuds.
En fait, j'ai toute ma feuille de style dans la place, et ils sont enchaînés par l'aide ("appel-template"). Si l'aide est je regarde dans un modèle d'exploration?
Bonne question, +1. Voir ma réponse pour une solution complète. 🙂

OriginalL'auteur Kevin | 2011-01-31