在这个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'))
我得到的结果是:
<檔>
<段 屬性="段落的意思">中文內容</段>
</檔>
<節點 名稱="檔" 屬性="值">
<節點 名稱="段" 屬性="值">中文內容</節點>
</節點>
似乎XSLT转换为属性值转义unicode字符(即使它们是XML安全的)。有没有办法输出转换后的XML,其属性值是非转义的?我想要这样的结果:
<檔>
<段 屬性="段落的意思">中文內容</段>
</檔>
<節點 名稱="檔" 屬性="值">
<節點 名稱="段" 屬性="值">中文內容</節點>
</節點>