我有以下XML:
<assessment>
<section>
<item name="Item1"/>
<item name="Item2"/>
<item name="Item3">
<attributes>
<item_references>
<item_reference>
<attributes>
<item name="Item3.1">
<item name="Item3.1.1"/>
</item>
</attributes>
</item_reference>
</item_references>
</attributes>
</item>
</section>
</assessment>
使用XSLT,我想计算项目数,但不计算嵌套在项目中的项目。在这种情况下,我想计算Item1,Item2和Item3,但不计算Item3.1或Item3.1.1。所以,在这种情况下,答案应该是3(而不是5)。
我有以下代码来计算项目,但不会遗漏嵌套项目:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="assessment">
<xsl:value-of select="count(.//item)"/>
</xsl:template>
</xsl:stylesheet>
如何修改此代码以排除嵌套项?
答案 0 :(得分:2)
试试这个。
计数(.//项[否(祖先::项)])
答案 1 :(得分:0)
按照样式表,这个
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="assessment">
<xsl:value-of select="count(*/item)"/>
</xsl:template>
</xsl:stylesheet>
结果:
3
注意:您还可以匹配section
元素。尽可能避免使用后代轴。