我正在尝试计算XML文档中的节点,如下所示,而不事先知道节点的名称:
<library>
<book>1</book>
<book>2</book>
<magazine>1</magazine>
<magazine>2</magazine>
<magazine>3</magazine>
</library>
我正在尝试这样做(以及此类型的变体),但没有到达任何地方:
<xsl:template match="*">
<xsl:variable name="e" select="name()"/>
<xsl:value-of select="count(../$e)"/>
</xsl:template>
感谢Dimitre,这就是诀窍! :)
答案 0 :(得分:0)
使用强>:
count(//*[name() = name(current())]
因为此XPath表达式以//
伪运算符开头,所以效率可能非常低(慢)。
更好地使用密钥。定义:
<xsl:key name="kElemByName" match="*" use="name()"/>
并在您的代码中使用它:
count(key('kElemByName', name(current())))