我希望能够使用XSL计算XML文件中的“端点”。 根据端点,我指的是没有包含数据的子项的标记。
即
<xmlsnippet>
<tag1>NOTENOUGHDAYS</tag1>
<tag2>INVALIDINPUTS</tag2>
<tag3>
<tag4>
<tag5>2</tag5>
<tag6>1</tag6>
</tag4>
</tag3>
</xmlsnippet>
这个XML应该返回4,因为有4个“端点”
答案 0 :(得分:6)
<xsl:template match="/>
<xsl:value-of select="count(//*[not(*) and normalize-space() != ''])" />
</xsl:template>
通过后代轴(//
)递归整个XML树,查看没有子元素节点(*
)并包含其他数据的所有元素节点(not(*)
)比空白(normalize-space() != ''
)。
计算结果节点集(在您的情况下返回4)。
答案 1 :(得分:3)
*[not(*)]
用于没有子元素的元素。
编辑:计算它们只需使用count(elements)
答案 2 :(得分:2)
尝试: -
<xsl:variable name="numOfLeafNodes" select="count(//*[not(*)])" />
这将告诉您在被转换的整个xml中找到了多少个叶节点。使用: -
<xsl:variable name="numOfLeafNodes" select="count(.//*[not(*)])" />
查找当前上下文节点后代的叶节点数。