提问人:Rahul 提问时间:6/27/2023 更新时间:6/27/2023 访问量:32
character 属性必须是单个 XML 字符错误,同时取消转义某些实体
character attribute must be a single XML character error while unescaping some entities
问:
xml 数据中有一些用户定义的实体。为了取消对这些实体的转义,我们在以下代码中提到的 DOCTYPE 中使用实体引用:-
<!DOCTYPE xsl:stylesheet [
<!ENTITY sect "&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="—" string="&mdash;"/>
<xsl:output-character character="&" string="&amp;" />
<xsl:output-character character=""" string="&quot;" />
<xsl:output-character character="'" string="&apos;" />
<xsl:output-character character="§" string="&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 实体。
答:
0赞
Martin Honnen
6/27/2023
#1
在 DTD 中,而不是使用 .!ENTITY sect "&sect;"
!ENTITY sect "§"
评论
0赞
Rahul
6/27/2023
还有一些用户定义的实体,我看不到任何字符数值。如何定义这些实体?
0赞
Martin Honnen
6/27/2023
@Rahul,在一个单独的新问题中提出这个问题,并显示必要的细节。实体替换当然可以由 DTD 定义中的多个字符组成,但 XSLT 字符映射仅适用于单个字符。
上一个:实体转换为自定义实体
评论