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

如何为<、>应用disable-output-escaping='yes'并排除&

XSLT部分实体转义处理方案

问题说明

需要处理包含<、>和&实体引用的文本:

  • 要求<和>转义后输出为实体字符(即&lt;转成<,&gt;转成>)
  • 但&必须保留&amp;的转义形式,不能转成&,因为输出要作为另一XSLT转换的输入

给定内容

变量定义:

<xsl:variable name="text" select="'&lt;span&gt;some text &amp;amp; &lt;span&gt;'"/>

尝试的代码:

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

当前输出:

<span>some text & <span>

期望输出:

<span>some text &amp; <span>

解决方案

不能全局使用disable-output-escaping="yes",否则会把所有实体都转成对应字符(包括&amp;转成&)。可以通过<xsl:analyze-string>针对性处理<和>的转义,同时保留&的转义状态:

<xsl:analyze-string select="$text" regex="&amp;(lt|gt);">
  <xsl:matching-substring>
    <xsl:choose>
      <xsl:when test="regex-group(1)='lt'">
        <xsl:text>&lt;</xsl:text>
      </xsl:when>
      <xsl:when test="regex-group(1)='gt'">
        <xsl:text>&gt;</xsl:text>
      </xsl:when>
    </xsl:choose>
  </xsl:matching-substring>
  <xsl:non-matching-substring>
    <xsl:value-of select="."/>
  </xsl:non-matching-substring>
</xsl:analyze-string>

原理说明

  • 用正则匹配&lt;和&gt;,将它们分别替换为<和>
  • 其他内容(包括&amp;amp;)直接输出,保留原有转义形式
  • 最终输出会符合需求:<span>标签正常解析,&保留为&amp;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:45:22