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

XML文档含<字符时XSLT处理异常及内嵌HTML的解决问询

问题解决方案

核心问题根源

XML解析器会先于XSLT处理完成所有实体引用解析:

  • > 会被解析为 >,这是XML元素内容中的合法字符,因此无报错
  • &amp;lt; 会被解析为 <,而XML元素内容里的<若不属于标签的一部分,属于非法字符,直接触发解析错误,无法进入XSLT处理流程

具体解决步骤

1. 修正XML源文件的实体转义

  • 要在XML元素内容中包含 <,直接使用 &lt; 转义,而非 &amp;lt;:
    错误写法:
    <artist>Bob &amp;lt; Dylan</artist>
    
    正确写法:
    <artist>Bob &lt; Dylan</artist>
    
  • 内嵌HTML场景同理,直接使用XML合法转义:
    错误写法:
    <artist>&amp;lt;b&amp;gt;Bob&amp;lt;/b&amp;gt; &amp;lt; Dylan</artist>
    
    正确写法:
    <artist>&lt;b&gt;Bob&lt;/b&gt; &lt; Dylan</artist>
    

2. XSLT中正确使用disable-output-escaping

当XML源已完成正确转义后,使用disable-output-escaping="yes"即可保留原始符号或HTML标签:

<xsl:value-of select="artist" disable-output-escaping="yes" />

该写法会将XML解析后的内容(如<b>Bob</b> < Dylan>)直接输出,不会再次转义为&lt;b&gt;Bob&lt;/b&gt; &lt; Dylan。

3. XSLT字符串常量的正确写法

在XSLT中直接编写包含<的字符串时,需要在XSLT文件中用&amp;lt;转义(因为XSLT本身也是XML文件):
错误写法:

<xsl:value-of disable-output-escaping="yes" select="string('ab&lt;cd')"/>

正确写法:

<xsl:value-of disable-output-escaping="yes" select="string('ab&amp;lt;cd')"/>

这样XSLT解析后字符串内容为ab<cd>,开启disable-output-escaping后可正常输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:10:07