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

XSLT1.0中copy-of筛选IDOC节点匹配不到数据问题排查

故障原因

转换逻辑匹配不到目标节点的核心问题是XSLT参数定义语法错误,节点筛选的XPath逻辑本身没有问题:

  • 你定义参数时写的<xsl:param name="Doc" select="SL000000598" />不符合XSLT 1.0语法规则:select属性内的内容会被解析为XPath表达式,不加引号的SL000000598会被引擎识别为「查找当前上下文下名为SL000000598的XML子节点」,而非你预期的字符串值。由于源XML中不存在这个名称的节点,参数实际取值为空,自然无法匹配到HEADER_TXT符合条件的IDOC节点。
修正后的转换代码

只需要给参数的字符串默认值包裹单引号,明确声明为字符串常量即可,完整代码如下:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 字符串类型的参数默认值必须加引号,否则会被识别为XPath节点选择表达式 -->
    <xsl:param name="Doc" select="'SL000000598'" />
    <xsl:template match="/ACC_DOCUMENT04">
        <ACC_DOCUMENT04>
            <xsl:copy-of select="IDOC[E1BPACHE09/HEADER_TXT=$Doc]"/>
        </ACC_DOCUMENT04>
    </xsl:template>
</xsl:stylesheet>
注意事项
  • 如果是通过外部程序、ETL工具动态传入Doc参数,外部传入的字符串会自动覆盖XSLT里写的默认值,不需要额外加引号处理;只有硬编码在XSLT文件内的字符串默认值需要按上述规则加引号。
  • 原筛选逻辑里的./IDOC前缀的./是冗余写法,直接写IDOC即可,不影响匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:01:08