不要转义lxml(python3)中的属性内容?

时间:2015-06-16 16:57:50

标签: python

在这个python脚本中:

#!/usr/bin/env python3
import lxml.etree as etree

if __name__ == "__main__":
    xml_tree = etree.XML("""<檔>
<段 屬性="段落的意思">中文內容</段>
</檔>""")
    xsl_tree = etree.XML("""<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>

<xsl:template match="*">
<節點 名稱="{local-name()}" 屬性="值"><xsl:apply-templates /></節點>
</xsl:template>

</xsl:stylesheet>""")
    transform = etree.XSLT(xsl_tree)
    result = transform(xml_tree)
    print(etree.tostring(xml_tree, encoding="UTF-8").decode('UTF-8'))
    print(etree.tostring(result, encoding="UTF-8").decode('UTF-8'))

我得到的结果是:

<檔>
<段 屬性="段落的意思">中文內容</段>
</檔>
<節點 名稱="&#x6A94;" 屬性="&#x503C;">
<節點 名稱="&#x6BB5;" 屬性="&#x503C;">中文內容</節點>
</節點>

似乎XSLT转换为属性值转义unicode字符(即使它们是XML安全的)。有没有办法输出转换后的XML,其属性值是非转义的?我想要这样的结果:

<檔>
<段 屬性="段落的意思">中文內容</段>
</檔>
<節點 名稱="檔" 屬性="值">
<節點 名稱="段" 屬性="值">中文內容</節點>
</節點>

0 个答案:

没有答案