xml调用问题

bingxinzhimeng 2012-11-22 10:52:58
大家好:
我刚接触xml,遇到这样一个问题:
第一个文件:classes2.dtd
<!ELEMENT 班级(学生+)>
<!ELEMENT 学生(名字,年龄,介绍)>
<!ELEMENT 名字(#PCDATA)>
<!ELEMENT 年龄(#PCDATA)>
<!ELEMENT 介绍(#PCDATA)>
第二个文件:classes2.xml
<?xml version="1.0" encoding="utf-8"?>
<!--一定要保证文件的保存的编码方式和utf-8一致-->
<!--引入dtd-->
<!DOCTYPE 班级 SYSTEM "classes2.dtd">
<班级>
<学生>
<名字>li</名字>
<年龄>50</年龄>
<介绍>1班</介绍>
<面积>20</面积>
</学生>
<学生>
<名字>张</名字>
<年龄>80</年龄>
<介绍>2班</介绍>
</学生>
</班级>
第三个文件:checkDtd.html
<html>
<head>
<title>测试dtd</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script language="javascript">
<!--
//window.alert("ok");
//创建一个xml解析器
var xmldoc =new ActiveXObject("Microsoft.XMLDOM");
//开启校验功能
xmldoc.validateOnParse =true;
//指定对哪个xml文件校验
xmldoc.load("classes2.xml");
//如果有错误信息,则输出
document.write("错误信息="+xmldoc.parseError.reason+"<br/>");
document.write("错误的行号="+xmldoc.parseError.line+"<br/>");
//-->
</script>
</head>
</html>
执行checkDtd.html文件结果如下:
错误信息=
错误的行号=0
【问题】为什么checkDtd.html文件没有报错呢?请教
...全文
131 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bingxinzhimeng 2012-12-09
  • 打赏
  • 举报
回复
引用 9 楼 cds27 的回复:
xmldoc有个属性async,用来设置同步读取或异步读取。 如果是同步读取(即false),则是等待XML加载完成后,再执行下一条语句。 异步读取则是无论XML是否加载完成,都直接执行下一条语句。 因此,如果不是设置false,XML尚未载入完成,以下的判断都无从说起了。
恩恩,谢谢您
cds27 2012-12-06
  • 打赏
  • 举报
回复
xmldoc有个属性async,用来设置同步读取或异步读取。 如果是同步读取(即false),则是等待XML加载完成后,再执行下一条语句。 异步读取则是无论XML是否加载完成,都直接执行下一条语句。 因此,如果不是设置false,XML尚未载入完成,以下的判断都无从说起了。
bingxinzhimeng 2012-12-03
  • 打赏
  • 举报
回复
引用 7 楼 cds27 的回复:
应该是异步问题。 你在xmldoc.load("classes2.xml"); 前面加上一句xmldoc.async=false;
恩,确实是这个问题,加上您说的这句后,在apache下也报错了,您说的很对,再问一句,这是什么异步问题呀?大体给我介绍一下,可以吗?
cds27 2012-11-30
  • 打赏
  • 举报
回复
应该是异步问题。 你在xmldoc.load("classes2.xml"); 前面加上一句xmldoc.async=false;
bingxinzhimeng 2012-11-23
  • 打赏
  • 举报
回复
引用 4 楼 cds27 的回复:
哦,忘了告诉你了,你的DTD有2处错误,我做了修正。 1,<!ELEMENT 班级(学生+)>,班级和(学生+)中间要有空格。 正确为<!ELEMENT 班级 (学生+)> 2,<!ELEMENT 学生(名字,年龄,介绍)>,同上空格错误,并且“(”与“)”错误。这两个是全角括号,正确应为半角括号。 你修正了这两个问题后,再执行就能出现我上面列出的问题了。
调试出来啦,谢谢版主
bingxinzhimeng 2012-11-23
  • 打赏
  • 举报
回复
版主,还是不太清楚一个问题,就是我用的是xampp软件,所有的代码都是由这个软件来运行,但是为什么在checkDtd.html文件直接单击右键的话,打开的网页,现则报错正确; 但是如果在浏览器中输入此程序的位置:http://localhost/mycode/xml/checkDtd的话,出现的提示信息就是: 错误信息= 错误的行号=0 为什么呀?难道是xml无法再apache中运行吗?还是需要配置呀?我在网上也没搜出个所以然啦,先在此表示感谢啦
cds27 2012-11-23
  • 打赏
  • 举报
回复
哦,忘了告诉你了,你的DTD有2处错误,我做了修正。 1,<!ELEMENT 班级(学生+)>,班级和(学生+)中间要有空格。 正确为<!ELEMENT 班级 (学生+)> 2,<!ELEMENT 学生(名字,年龄,介绍)>,同上空格错误,并且“(”与“)”错误。这两个是全角括号,正确应为半角括号。 你修正了这两个问题后,再执行就能出现我上面列出的问题了。
bingxinzhimeng 2012-11-23
  • 打赏
  • 举报
回复
引用 1 楼 cds27 的回复:
根据你提供的代码,我执行以后,是有报错的,错误提示如下: 错误信息=根据 DTD/Schema,元素内容无效。 错误的行号=10
如果在checkDtd.html文件直接单击右键的话,打开的网页,报错就是: 错误信息=缺少所需的空白区。 错误的行号=1 如果在浏览器中输入此程序的位置:http://localhost/mycode/xml/checkDtd的话,出现的提示信息就是: 错误信息= 错误的行号=0 而且,我用了ie8、360、firfox都没有出现您说的报错,是为什么呀
bingxinzhimeng 2012-11-23
  • 打赏
  • 举报
回复
引用 1 楼 cds27 的回复:
根据你提供的代码,我执行以后,是有报错的,错误提示如下: 错误信息=根据 DTD/Schema,元素内容无效。 错误的行号=10
版主,我今天又执行了一下以上代码,是有报错了,但是报的怎么和你的不同呀?错误信息如下: 错误信息=缺少所需的空白区。 错误的行号=1 这是为什么?昨天也是这个代码,怎么也说没错,今天报错了,但是报的又不对,这跟浏览器的设置有关系吗?我也没有对浏览器做过特殊操作呀?
cds27 2012-11-23
  • 打赏
  • 举报
回复
根据你提供的代码,我执行以后,是有报错的,错误提示如下: 错误信息=根据 DTD/Schema,元素内容无效。 错误的行号=10

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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