Comment faire pour incrémenter un XSL variable de type entier
Mis à jour
J'ai quelques données énormes, qui devient une grande table dire table parent
chaque table parent'ligne correspondra à une autre table (code donné ci-dessous) dire tableau enfant Alors, quand tout particulier de la colonne à partir de la table parent ligne est cliqué (sous forme de lien), il va à la partie de tableau tableau enfant
j'ai donc besoin d'un compteur de différencier chaque tableau enfant. Merci de m'aider à comprendre ce problème. Grâce
<xsl:choose>
<xsl:variable name="counter" as="xs:integer"/>
$counter=0 <!--here i am assigning 0-->
<xsl:when test="DBInfo/ORSDBInfo/ORSReposTableTypeInd1/ORSReposColumAllWithTableTypeInd1/@ColumnNm">
<dd>
<xsl:for-each select="DBInfo/ORSDBInfo/ORSReposTableTypeInd1">
<div class="horz">
<a name="_ORS$counter" href="#_top">ORSReposColumAllWithTableTypeInd1:<xsl:value-of select="$counter"/> </a>
<table border="1"> <!--above I am using counter to print-->
<tbody>
<tr>
<th>Creator</th>
<th>LastUpdate</th>
<th>UpdatedBy</th>
</tr>
<xsl:for-each select="ORSReposColumAllWithTableTypeInd1">
<tr>
<td><xsl:value-of select="@Creator"/></td>
<td><xsl:value-of select="@LastUpdate"/></td>
<td><xsl:value-of select="@UpdatedBy"/>
</tr>
</xsl:for-each>
</tbody>
</table>
</div>
$counter=$counter+1 <!--Counter is incremented-->
<br/>
</xsl:for-each>
</dd>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
Plus De Mises À Jour
Donc, après avoir fait référence à Wilfred de réponse, je suis venu avec
<a name="_ORS" href="#_top">ORSReposColumAllWithTableTypeInd1_<xsl:number value="position()" format="1" /></a>
mais maintenant comment l'utiliser à l'intérieur <a name="_ORS"
en sorte que je reçois _ORS1, _ORS2, _ORS3 et ainsi de suite...
Mes excuses pour la non formaté question, j'ai édité ma question. Veuillez prendre un coup d'oeil
OriginalL'auteur abi1964 | 2011-10-31
Vous devez vous connecter pour publier un commentaire.
Que penser de l'utilisation:
Voir http://www.w3.org/TR/xslt#number
Il y a différentes façons de l'inclure en tant qu'attributs dans votre balise d'ancrage.
Option 1: Utilisation de variables
Option 2: xsl:attribute
_ORS1, _ORS2, _ORS3
et ainsi de suite... ? Veuillez voir Plus de mises à jour dans ma questionSpringer: Veuillez jeter un oeil à question similaire j'ai suivi votre solution, mais il ne semble pas fonctionner
OriginalL'auteur Wilfred Springer
Utilisation
position()
. Puisque vous êtes l'incrémentation de ce une fois par pour-chaque pourquoi ne pas simplement utiliserposition()
?$counter
ne semble pas fonctionner pour moi, d'où vient cette$counter
est se référé?OriginalL'auteur FailedDev
La notion d'incrément est étrangère à XSLT comme un langage fonctionnel. Toutefois, vous pouvez simplement compter le nombre d'éléments précédents:
En fonction de votre mise en page de document, ce peut être plus compliqué, votre kilométrage peut varier.
<a name="_ORS$counter"
Remarque:8th line
C'est le droit. XSLT est un déclarative, langage fonctionnel, pas un langage procédural comme vous avez l'habitude. Il est temps que vous avez fait un peu de lecture! Souvent, la solution à un problème dans un langage fonctionnel est très différent de la solution dans un langage procédural - et souvent, c'est beaucoup plus simple, au moins une fois que vous avez saisi le concept.
OriginalL'auteur thiton
J'ai le même problème et de la façon la plus simple de le résoudre est d'utiliser Saxon. Ici vous pouvez trouver ma solution L'incrémentation et la vérification de la variable compteur dans XSLT
OriginalL'auteur Taras Klym