在用xslt转化xml时候经常会遇到html实体转化的问题,我今天特意总结和探讨了一下,发现三种引用html实体的方法,大家今后可以借鉴,这里以引用copy 符号为例。
xslt文件:
<?xml version="1.0" encoding="GB2312"?> <!DOCTYPE copyright [ <!ENTITY Copyright "©"> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="GB2312" indent="yes" /> <xsl:template match="/">ffffff &Copyright; gggggg<xsl:text disable-output-escaping="yes">©<![CDATA[©]]></xsl:text> </xsl:template> </xsl:stylesheet>
xml文件:
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="entities.xslt"?>
<ff></ff>
显示结果为
ffffff © gggggg© ©
三个© 显示的方法不一样
第一个用 实体定义的方法
第二个用&转&的方法
第三个用CDATA节的方法
注意第二和第三中方法都需要放在
<xsl:text disable-output-escaping="yes">里面
好,html实体介绍到此。
在xslt中显式声明XML头的办法,即加入 <?xml version="1.0" encoding="utf-8"?>头,方法如下
1. <xsl:output omit-xml-declaration="no" method="xml" encoding="utf8" /> 这样可以自动加入
2. 如果上面的无法实现就强行插入数据 <xsl:text disable-output-escaping="yes"> <![CDATA[ <?xml version="1.0" encoding="utf-8"?>]]> </xsl:text>也可以实现类似的方法
3.在转换器中指定参数设置也可以达到效果。