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

使用XSL交叉引用统计匹配节点数量的技术咨询

解决XSL统计关联术语数量并输出名称的问题

我来帮你调整现有的XSL样式表,让它既能输出关联的术语名称,又能精准统计对应类型desc的术语总数。针对你给出的XML结构和需求,我们可以这样修改:

修改后的XSL代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/> <!-- 开启缩进让输出结构更清晰 -->

<!-- 保留原有的key,用于通过concept的ID匹配对应的节点 -->
<xsl:key name = "terms" match = "desc[@type = 'concept']" use = "ID"/>

<xsl:template match="/">
  <!-- 这里指定要统计的目标类型,比如type="a";如果要处理所有非concept类型,改成@type != 'concept'即可 -->
  <xsl:apply-templates select = "rdf/desc[@type != 'concept' and @type = 'a']"/>
</xsl:template>

<xsl:template match = "desc">
  <association>
    <!-- 输出当前desc的类型标识 -->
    <desc-type><xsl:value-of select="@type"/></desc-type>
    <!-- 获取与当前desc关联的所有concept节点 -->
    <xsl:variable name = "matching-concepts" select = "key('terms', substring(concept/@ID, 2))"/>
    <!-- 统计关联的术语总数:遍历所有匹配concept下的term节点并计数 -->
    <total-terms><xsl:value-of select="count($matching-concepts/term)"/></total-terms>
    <!-- 列出所有关联的术语名称 -->
    <terms>
      <xsl:for-each select="$matching-concepts/term/info">
        <term-name><xsl:value-of select="name/text()"/></term-name>
      </xsl:for-each>
    </terms>
  </association>
</xsl:template>
</xsl:stylesheet>

代码关键说明

  • 灵活匹配目标类型:根模板的select条件可以按需调整,比如要同时处理type="a"和type="b",直接改成rdf/desc[@type != 'concept']即可。
  • 统计术语数量:用count($matching-concepts/term)直接统计所有关联concept节点下的term总数,这会自动累加同一concept下的多个term(比如你的示例中type="a"对应2个术语)。
  • 结构化输出:把类型、数量、术语名称分别放在不同节点下,输出的XML结构更清晰易读,也方便后续处理。

测试输出结果

针对你提供的XML,运行修改后的样式表后,type="a"的desc会输出如下内容:

<association>
  <desc-type>a</desc-type>
  <total-terms>2</total-terms>
  <terms>
    <term-name>apple</term-name>
    <term-name>pear</term-name>
  </terms>
</association>

如果改成处理所有非concept类型,还会输出type="b"的统计结果(总数1,术语chocolate)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:42:40