在 xsl 转换期间取消转义某些实体

Unescape some entities during xsl transformation

提问人:Rahul 提问时间:6/21/2023 更新时间:6/21/2023 访问量:36

问:

我们做了一个 xsl 转换,将十六进制值转换为实体。 现在,在转换之后,有一些实体正在转换为相应的值,例如被转换为“&”,的情况与此类似。 为了保持实体不变,我们使用了以下 xsl 代码:-&§

<xsl:stylesheet version='3.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
<xsl:output method="xml" omit-xml-declaration="no" use-character-maps="mdash" />
<xsl:character-map name="mdash">
<xsl:output-character character="&#x2014;" string="&amp;mdash;"/>
<xsl:output-character character="&amp;" string="&amp;amp;" />
<xsl:output-character character="&quot;" string="&amp;quot;" />
<xsl:output-character character="&apos;" string="&amp;apos;" />
<xsl:output-character character="&sect;" string="&amp;sect;" />
</xsl:character-map>
<!--=================================================================-->
<xsl:template match="@* | node()">
<!--=================================================================-->
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

现在,大多数实体的转换都很好,但是对于 &sect,会显示以下错误:-

SXXP0003: Error reported by XML parser: The entity "sect" was referenced, but not declared.

有没有办法逃脱这个实体教派?

XSLT XML 解析 Saxon Saxparser XSLT-3.0

评论


答:

2赞 Martin Honnen 6/21/2023 #1

使用数字字符引用,例如:&#167;

<xsl:output-character character="&#167;" string="&amp;sect;" />

评论

0赞 Michael Kay 6/21/2023
或者,在样式表中包含一个 DOCTYPE,用于声明要引用的实体。