使用:
count(/*/TB[DIACT][1]/preceding-sibling::TB) +1
今後の処理でこれが必要になるため、上記の値を持つ変数を設定します。
<xsl:variable name="vPos"
select="count(/*/TB[DIACT][1]/preceding-sibling::TB) +1"/>
または、次を使用することもできますxsl:number
。
<xsl:variable name="vPos2">
<xsl:number count="TB"/>
</xsl:variable>
2つのテクニックの簡単なデモを次に示します。
<xsl:template match="/">
<xsl:variable name="vPos"
select="count(/*/TB[DIACT][1]/preceding-sibling::TB) +1"/>
<xsl:value-of select="$vPos"/>
===========
<xsl:for-each select="/*/TB[DIACT][1]">
<xsl:variable name="vPos2">
<xsl:number count="TB"/>
</xsl:variable>
<xsl:value-of select="$vPos2"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
この変換が提供されたXMLドキュメントに適用される場合:
<Root>
<TB> .. </TB>
<TB> .. </TB>
<TB> ..
<DIACT>2</DIACT>
</TB>
<TB> ...
<DIACT>3</DIACT>
</TB>
<TB> ----
<DIACT>4</DIACT> ---
</TB>
</Root>
2つの正しい結果が生成されます:
3
===========
3