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

为何空XSLT样式表会返回XML中的文本内容?

为什么空XSLT样式表会返回文本内容?

当你使用空样式表(或样式表中的模板无法匹配任何节点)时,XSLT处理器会自动启用内置的默认模板规则,这就是输出文本内容的核心原因。

默认模板的两类核心规则:

  1. 元素/根节点的默认模板
    这个模板会递归处理当前节点的所有子节点,相当于“穿透”元素结构,继续向下遍历:

    <xsl:template match="*|/">
      <xsl:apply-templates/>
    </xsl:template>
    

    比如你的测试XML里的<TEST>、<ABC>、<a>等元素,因为没有匹配的自定义模板,处理器会触发这个规则,继续处理它们的子节点。

  2. 文本节点的默认模板
    这个模板会直接输出文本节点的内容:

    <xsl:template match="text()">
      <xsl:value-of select="."/>
    </xsl:template>
    

    当处理器递归到<a>、<b>、<c>内部的文本节点时,就会触发这个规则,把文本内容直接输出。

结合你的示例的执行流程:

  • 根节点触发元素默认模板,处理<TEST>子节点;
  • <TEST>触发元素默认模板,处理<ABC>子节点;
  • <ABC>触发元素默认模板,处理<a>、<b>、<c>子节点;
  • 每个<a>/<b>/<c>触发元素默认模板,处理内部的文本节点;
  • 文本节点触发文本默认模板,输出内容,最终得到所有文本的拼接结果。

如果样式表中存在模板但match值无法匹配任何节点,处理器同样会回退到默认模板规则,产生和空样式表一致的输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:20:04