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

XSLT 3.0中<xsl:value-of>在<xsl:sort>上下文的异常行为疑问

XSLT 3.0中<xsl:value-of>多节点输出的原因及规范依据

行为差异的核心原因

XSLT 3.0(含2.0)与1.0对<xsl:value-of>的处理逻辑存在本质区别:

  • XSLT 1.0里,<xsl:value-of select="节点集">仅输出节点集中第一个节点的字符串值,无视后续节点。
  • XSLT 2.0及之后版本中,<xsl:value-of>会将select属性选中的所有节点序列的字符串值按顺序拼接输出,默认用空格分隔(可通过separator属性自定义分隔符)。

W3C规范依据

根据XSLT 3.0规范对<xsl:value-of>的定义:

<xsl:value-of>指令计算select属性指定的表达式,将结果序列中的每个项转换为字符串,随后将这些字符串连接输出。若序列为空则输出空字符串;默认分隔符为单个空格,可通过separator属性指定其他分隔符。

而XSLT 1.0因无序列概念,仅支持节点集,设计上限定<xsl:value-of>仅取节点集的第一个节点值。

关于err-XTTE1020错误的补充

你遇到的err-XTTE1020错误,源于XSLT 2.0+要求排序键必须是单值序列(每个排序键对应唯一值)。原样式表中name/given返回多节点序列,不符合单值要求触发错误;修改为name/given[1]后仅取第一个<given>节点,满足单值要求,错误消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:33:19