xsl:value-of提取CRETIM字段值异常,输出后半段异常求助
问题分析与解决
问题原因
从你提供的代码来看,异常的核心原因在于XSLT的<xsl:attribute>节点内部存在冗余内容:
- 节点里除了提取CRETIM值的
<xsl:value-of>语句,还包含大量多余的换行、空格,以及一个额外的小写字母a - 这些无关内容会被XSLT引擎一并输出到
timestamp属性的值中,导致原本正常的112159后面被拼接了无效字符,出现输出异常 - 另外
disable-output-escaping="yes"属于无效配置,CRETIM的值是纯数字,不存在需要保留的转义字符,这个设置对结果没有帮助,反而可能引入潜在问题
解决方法
1. 清理属性节点内的冗余内容
将<xsl:attribute>内部的空白、换行和多余的a全部删除,整理为干净的代码:
<xsl:attribute name="timestamp"> <xsl:value-of select="EDI_DC40/CRETIM"/> </xsl:attribute>
如果要严格避免空白干扰,还可以简化为一行:
<xsl:attribute name="timestamp"><xsl:value-of select="EDI_DC40/CRETIM"/></xsl:attribute>
2. 移除无用的disable-output-escaping属性
直接删除disable-output-escaping="yes",因为纯数字场景下完全不需要禁用转义,移除后不会影响正常取值,还能减少无效配置。
补充优化(XSLT 2.0+适用)
如果你的环境支持XSLT 2.0及以上版本,可以用更简洁的属性值模板替代<xsl:attribute>写法,自动规避空白问题:
<your-target-element timestamp="{EDI_DC40/CRETIM}"> <!-- 元素其他内容 --> </your-target-element>
内容的提问来源于stack exchange,提问作者feiyang
相关产品推荐
相关产品推荐

