在xml应用中,经常将一些url信息作为xml数据存储,其中url参数有可能包含有中文字符。当使用dom对xml数据进行解析时,可以对中文字符进行编码。
但如果只使用xslt来显示xml数据时(data.xml+data.xsl),发现此时的url会出现编码错误.即使指定编码类型(encoding="gb2312"),依然会出现同样的问题.
测试发现:是ie的缓存机制问题,ie仍会把新的页面(所链接的url)的mime内容类型默认为text/xml
解决方法:
1.指定输出文档类型为xml文档 (example:data.xsl)
<xsl:output method="xml" encoding="gb2312" media-type="text/xml" />
2.在新的窗口打开,给联接增加属性,指明目标窗口为其他窗口 (example:data2.xsl)
<xsl:attribute name="target">_blank</xsl:attribute>
examples:
/*** data.xml ***/
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<root>
<search>
<url>http://www.google.com/search?q=</url>
<word>xml数据</word>
</search>
<search>
<url>http://www1.baidu.com/baidu?word=</url>
<word>xml数据</word>
</search>
<search>
<url>http://www.google.com/search?q=</url>
<word>极限编程(xp)</word>
</search>
<search>
<url>http://www1.baidu.com/baidu?word=</url>
<word>极限编程(xp)</word>
</search>
</root>
/*** data.xsl ***/
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
<!-- 去掉下面一句,将出现错误 -->
<xsl:output method="xml" encoding="gb2312" media-type="text/xml" />
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="search">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="url" /><xsl:value-of select="word" /></xsl:attribute>
<xsl:value-of select="word" />
</xsl:element>
<br />
</xsl:template>
</xsl:stylesheet>
/*** data2.xsl ***/
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">
<xsl:template match="/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="search">
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="url" /><xsl:value-of select="word" /></xsl:attribute>
<!-- 去掉下面一句,将出现错误 -->
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:value-of select="word" />
</xsl:element>
<br />
</xsl:template>
</xsl:stylesheet>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器