XSLT解析XML内容,特殊字符解析错误

icyer 2004-04-16 02:55:16
环境:Linux 7.1、Apache 1.3.22、php 4.0.6
代码有三个文件,chinese.php是脚本,chinese.xml是数据,chinese.xsl是将xml数据转换成html的

chinese.php(脚本,一般是business处理,生成xml数据):
<?
$sMyfilename = "chinese.xml";
$s_xslTemplageName = "chinese.xsl";
$parser = xslt_create();
xslt_run($parser, $s_xslTemplageName, $sMyfilename);
print xslt_fetch_result($parser);
?>


==========================
chinese.xml(需要传到html中的数据,由.php生成):
<?xml version="1.0" encoding="utf-8"?>
<CONTENT>
<NAME><![CDATA[中文]]></NAME>
</CONTENT>
//说明,<NAME />中的内容是"中文"两字的代码


===========================
chinese.xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1"/>
</head>
<body>
<input type="TEXT" value="{//CONTENT/NAME}"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


现象描述:
按照理想结果,文本框中应该显示"中文",但是,实际上,里面显示的是"中文"
通过IE中查看源代码,发现input的语句是:
<input type="TEXT" value="&#20013;&#25991;">
也就是说,XSLT把"&"解析成了"&"
不知道哪里还需要做修改?

访问的客户端是Win2k+IE6.0,都是中文

兄弟们帮帮忙,谢谢先
...全文
156 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
icyer 2004-04-21
  • 打赏
  • 举报
回复
再UP一下
icyer 2004-04-20
  • 打赏
  • 举报
回复
自己up一下
xuzuning 2004-04-19
  • 打赏
  • 举报
回复
楼主里理解有点问题了。
标记<![CDATA[ ]]>声明其间的内容为字符串,即所有字符都是字面意义的,不含在上下文件的特殊意义

<NAME><![CDATA[中文]]></NAME>
只会原样输出:中文

<NAME>中文</NAME>
才会输出:中文

这一点,你用浏览器直接打开chinese.xml就可看到
<?xml version="1.0" encoding="utf-8"?>
<CONTENT>
<NAME><![CDATA[中文]]></NAME>
<NAME>中文</NAME>
</CONTENT>
icyer 2004-04-19
  • 打赏
  • 举报
回复
楼上的,主要是XML的标记不对应,还有即使xslt不规范,比如<br>可以写成<br/>,或者 可以写成<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
icyer 2004-04-19
  • 打赏
  • 举报
回复
直接写到页面上当然可以
就算加上CDATA,直接写到HTML里(不是input里),也可以显示成中文的
但是,加到input中就自动转换&了
mistjin 2004-04-16
  • 打赏
  • 举报
回复
问楼主一个xslt_process的问题,
为什么我下载CSDN的XML和2.xsl,用xslt_process解析的时候总是不能通过
错误提示类似Error: XML parser error 4: not well-formed (invalid token)
怎么样才是良好格式的XML。
bflovesnow 2004-04-16
  • 打赏
  • 举报
回复
mark
icyer 2004-04-16
  • 打赏
  • 举报
回复
我将chinese.xml中的utf-8改成ISO-8859-1,也是一样的结果
ccterran 2004-04-16
  • 打赏
  • 举报
回复
应该是编码utf-8 的缘故。
icyer 2004-04-16
  • 打赏
  • 举报
回复
感觉很奇怪的是,XSLT会把"&"解析成"&"
即使我的<NAME />只有一个"&",也是一样的,在最后的HTML中也是
<input type="TEXT" value="&">
52juanjuan 2004-04-16
  • 打赏
  • 举报
回复
还要支持其它语言,那就不太清楚了
52juanjuan 2004-04-16
  • 打赏
  • 举报
回复
<meta http-equiv="Content-type" content="text/html; charset=gb2312"/>是按照中文解释
ccterran 2004-04-16
  • 打赏
  • 举报
回复
哦,那就不知道了。。
ccterran 2004-04-16
  • 打赏
  • 举报
回复
encoding="utf-8" ==>encoding="gb2312"
icyer 2004-04-16
  • 打赏
  • 举报
回复
不能用gb2312,因为还要支持其他语言
ccterran 2004-04-16
  • 打赏
  • 举报
回复
charset改成gb2312试一试

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧