要在XSL中得到任意节点的在XML DOM树中的深度,可以通过计算节点的祖先(ancestors)的数量得到。下面就是具体实现的例子。
TestNodeDeep.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="TestDeep.xsl"?>
<root>
<level-1>
<level-1-1>
<level-1-1-1/>
</level-1-1>
<level-1-2/>
</level-1>
<level-2>
<level-2-1>
</level-2-1>
<level-2-2>
<level-2-2-1/>
</level-2-2>
</level-2>
</root>
TestNodeDeep.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="//*">
<xsl:value-of select="local-name()"/>
<xsl:value-of select="count(ancestor::*)"/>
<br/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>