使用:
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>
下面是這兩種技術的簡單演示:
<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>
兩個正確結果生產:
3
===========
3
你能解釋爲什麼你想要該節點的位置? – Tomalak 2012-07-31 12:03:05
其實我需要根據這個位置做一些進一步的處理。對不起,但我無法解釋整個場景。但是有什麼辦法可以讓我得到這個。 – 2012-07-31 12:06:23
根據我的經驗:您幾乎從不需要節點的位置來進行進一步處理。很可能你試圖完全錯誤地做某件事,所以解釋這種情況可能是有益的。 – Tomalak 2012-07-31 12:08:02