不希望在转换XML时转义字符

时间:2011-06-28 06:52:03

标签: xml xslt

我正在使用XSL将一个XML转换为另一种形式的XML。

转换时,非英语字符会被转义。说'Ã'逃脱为“Atilde;”。

在解析转换的xml时,我看到以下错误:

org.xml.sax.SAXParseException:引用了实体“Atilde”,但未声明。

我的要求是,我不想让非英文字符被转义。我希望保留这些角色。

在我用来转换XML的XSL中,我编写了以下语句:

<xsl:output method="xml" indent="yes" encoding="utf-8" omit-xml-declaration="no"/>

我应该更改任何这些属性以实现我的要求

2 个答案:

答案 0 :(得分:4)

您需要提供doctype

<xsl:output method="xml" indent="yes" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" omit-xml-declaration="no"/>

答案 1 :(得分:2)

您无法在<output>标记中处理此问题,但在转换中生成text元素时可以chose not to escape output。要做到这一点,请使用:

<xsl:text disable-output-escaping="yes">