我希望计算当前节点的深度。下面是xml代码和我想要的输出
的示例<boxes>
<box name="box A">
<box name="box B">
</box>
</box>
<box name="box C">
<box name="box D">
<box name="box E">
<box name="box F">
</box>
</box>
</box>
</box>
</boxes>
XSL看起来像这样
<xsl:for-each select="box">
<xsl:value-of select="DEPTH"/><xsl:value-of select="@name"/>
<xsl:for-each select="box">
<xsl:value-of select="DEPTH"/><xsl:value-of select="@name"/>
<xsl:for-each select="box">
<xsl:value-of select="DEPTH"/><xsl:value-of select="@name"/>
<xsl:for-each select="box">
<xsl:value-of select="DEPTH"/><xsl:value-of select="@name"/>
<xsl:for-each select="box">
<xsl:value-of select="DEPTH"/><xsl:value-of select="@name"/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
输出看起来像这样
1盒A
2箱B
1箱C
2箱D
3箱E
4盒F
答案 0 :(得分:0)
我希望计算当前节点的深度。
尝试:
count(ancestor-or-self::*)
(假设&#34;节点&#34;表示&#34;元素&#34;在此上下文中。)
例如,以下样式表:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="box">
<xsl:value-of select="count(ancestor-or-self::*)"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
应用于您的示例输入时,将返回:
2 box A
3 box B
2 box C
3 box D
4 box E
5 box F