You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSLT统计包含特定文本节点的XML元素数量

用XSLT统计包含特定文本的元素数量

假设你的PetShop XML结构大概是这样的:

<PetShop>
  <Cage>
    <Occupant1>Parrot</Occupant1>
    <Occupant2>Monkey</Occupant2>
  </Cage>
  <Cage>
    <Occupant1>Monkey</Occupant1>
    <Occupant2>Parrot</Occupant2>
  </Cage>
  <Cage>
    <Occupant1>Parrot</Occupant1>
    <Occupant2>Parrot</Occupant2>
  </Cage>
</PetShop>

下面提供几种针对性的统计方案,你可以根据需求选择:

方案1:精确匹配目标文本

如果要统计所有文本内容完全等于指定值的Occupant1/Occupant2元素总数,用这段XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <!-- 可修改的目标文本参数 -->
  <xsl:param name="targetText" select="'Parrot'"/>

  <xsl:template match="/">
    <!-- 核心统计逻辑:定位元素 + 筛选文本 + 计数 -->
    <xsl:value-of select="count(//*[local-name()='Occupant1' or local-name()='Occupant2'][text()=$targetText])"/>
  </xsl:template>
</xsl:stylesheet>

代码说明:

  • //*[local-name()='Occupant1' or local-name()='Occupant2']:定位到所有名为Occupant1或Occupant2的元素
  • [text()=$targetText]:筛选出文本内容精确匹配$targetText的元素
  • count(...):计算符合条件的元素总数

用上面的示例XML测试,会输出4(一共4个文本为Parrot的元素)。

方案2:模糊匹配(包含目标文本)

如果需要统计文本中包含指定内容的元素(比如文本是Blue Parrot也能被匹配),只需要把筛选条件改成:

count(//*[local-name()='Occupant1' or local-name()='Occupant2'][contains(text(), $targetText)])

方案3:按Cage分组统计

要是想知道每个笼子里有多少个目标元素,可以遍历每个Cage单独统计:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:param name="targetText" select="'Parrot'"/>

  <xsl:template match="/PetShop">
    <xsl:for-each select="Cage">
      Cage <xsl:value-of select="position()"/>: 
      <xsl:value-of select="count(*[local-name()='Occupant1' or local-name()='Occupant2'][text()=$targetText])"/>
      <xsl:text>&#10;</xsl:text> <!-- 换行符,让输出更清晰 -->
    </xsl:for-each>
    <xsl:text>Total: </xsl:text>
    <xsl:value-of select="count(//*[local-name()='Occupant1' or local-name()='Occupant2'][text()=$targetText])"/>
  </xsl:template>
</xsl:stylesheet>

运行后会输出:

Cage 1: 1
Cage 2: 1
Cage 3: 2
Total: 4

你可以根据实际的匹配规则和输出需求调整代码,这些方案都能很好地完成统计任务。

内容的提问来源于stack exchange,提问作者hglocke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:31