character 属性必须是单个 XML 字符错误,同时取消转义某些实体

character attribute must be a single XML character error while unescaping some entities

提问人:Rahul 提问时间:6/27/2023 更新时间:6/27/2023 访问量:32

问:

xml 数据中有一些用户定义的实体。为了取消对这些实体的转义,我们在以下代码中提到的 DOCTYPE 中使用实体引用:-

<!DOCTYPE xsl:stylesheet [
<!ENTITY sect "&amp;sect;">
]>
<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>

在执行时,我们面临以下错误:-

  Error at xsl:output-character on line 11 column 64
  XTSE0020: character attribute must be a single XML character

此错误适用于第 11 行的 sect 实体。

XSLT XML 解析 Saxon Saxparser XSLT-3.0

评论


答:

0赞 Martin Honnen 6/27/2023 #1

在 DTD 中,而不是使用 .!ENTITY sect "&amp;sect;"!ENTITY sect "&#167;"

评论

0赞 Rahul 6/27/2023
还有一些用户定义的实体,我看不到任何字符数值。如何定义这些实体?
0赞 Martin Honnen 6/27/2023
@Rahul,在一个单独的新问题中提出这个问题,并显示必要的细节。实体替换当然可以由 DTD 定义中的多个字符组成,但 XSLT 字符映射仅适用于单个字符。