如何使用XSLT统计根元素下特定元素的总数?
用XSLT统计XML中特定元素的数量(以为例)
需求说明
需要统计XML文档中所有<app>元素的数量,示例XML结构如下:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="sum.xsl"?> <sum> <!-- expect Two --> <ab1 param="a"> <ab2 param="b"> <app> <!-- +1 --> <var1 name="a"/> <app> <!-- +1 --> <var2 name="a"/> </app> </app> </ab2> </ab1> </sum>
期望输出仅返回元素数量的结果(带XML声明):
<?xml version="1.0" encoding="UTF-8"?> 2
实现方案
可以通过以下XSLT代码实现统计需求:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 匹配XML根节点,执行统计逻辑 --> <xsl:template match="/"> <!-- 输出XML声明及换行符 --> <xsl:text><?xml version="1.0" encoding="UTF-8"?> </xsl:text> <!-- 统计所有层级的<app>元素并输出数量 --> <xsl:value-of select="count(//app)"/> </xsl:template> </xsl:stylesheet>
关键代码解释
//app:XPath表达式,匹配文档中所有层级的<app>元素,不受嵌套结构影响。count():XSLT内置函数,计算传入节点集合的元素总数。<xsl:text>:用于输出固定格式的XML声明和换行符,确保输出与期望格式一致;若不需要XML声明,可直接保留<xsl:value-of select="count(//app)"/>。
内容的提问来源于stack exchange,提问作者Yusuke
相关产品推荐
相关产品推荐

