今天刚开始看XML,有个问题闹不清楚

cleverzhang 2004-03-23 03:23:12
可能很菜的问题,关于文挡定义的

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE GREETING[
<!ELEMENT GREETING ANY>
<!ELEMENT TT (#PCDATA)> <!--这里声明TT是PCDATA了-->
]>

<GREETING>

<TT>
<ASD>S</ASD><!--那这里就肯定是非法的了,可在浏览器上还是能正常显示啊-->
</TT>

</GREETING>
...全文
29 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Betteronly 2004-03-30
  • 打赏
  • 举报
回复
学习中
SaintGenius 2004-03-24
  • 打赏
  • 举报
回复
IE的话可能有些错不会报,自己编一个校验程序就行。代码如下:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>检验XML文档</TITLE>
<SCRIPT type="text/JavaScript">
function getError(){
if(filename.value==""){
outhtml.innerHTML="<h1><font color='#ff0000'>没有指定被检验文档</font></h1>";
return;
}
var xmlChecker=new ActiveXObject("Microsoft.XMLDOM");
xmlChecker.validateOnParse="true";
xmlChecker.load(filename.value);
var str="";
if(xmlChecker.parseError.errorCode!=0){
var str1="<b>被检验的XML文档不合法,具体信息如下:</b>";
var str2=xmlChecker.parseError.errorCode;
var str3=xmlChecker.parseError.line;
var str4=xmlChecker.parseError.srcText;
var str5=xmlChecker.parseError.linepos;
var str6=xmlChecker.parseError.reason;
var str7=xmlChecker.parseError.url;
str=str1+"<br><b>错误代号: </b>"+str2+"<br>错误发生在第 <b>"+str3+"</b>行<br>"+"<br><b>错误代码如下: </b>"+str4+"<br>具体位置在第 <b>"+str5+"</b>个字符处:"+"<br><b>产生错误原因如下:</b>"+str6+"<br><b>文件位置: </b>"+str7;
}else{str="这是一个合法的XML文档!";}
outhtml.innerHTML=str;
}
</SCRIPT>
</HEAD>
<BODY>
<OBJECT width=0 height=0 classid="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" id="xmldso">
</OBJECT>
<center>
输入被检测XML文档URL:
<input type="file" id="filename">
<br><br>
<button onclick="getError()">显示检测结果</button>
</center>
<hr>
<span id="outhtml"></span>
</BODY>
</HTML>
xzq686 2004-03-23
  • 打赏
  • 举报
回复
<?xml version="1.0" standalone="yes"?>

<!DOCTYPE GREETING[
<!ELEMENT GREETING(TT*)><!--这里面这样。不用ANY试试!-->
<!ELEMENT TT (#PCDATA)> <!--这里声明TT是PCDATA了-->
]>

<GREETING>

<TT>
<ASD>S</ASD><!--那这里就肯定是非法的了,可在浏览器上还是能正常显示啊-->
</TT>

</GREETING>
cleverzhang 2004-03-23
  • 打赏
  • 举报
回复
引用2楼的

我现在定义的TT里就没有子元素,如果不小心写上了子元素,就像我最上面写的那样,难道不出错吗?可我的IE没有任何报错
wdfboy1978 2004-03-23
  • 打赏
  • 举报
回复
唉!还是使用schema来写验证文件好!DTD太难学了!
SaintGenius 2004-03-23
  • 打赏
  • 举报
回复
TT有子元素,所以不能定义为#PCDATA。若TT下既有文本又有子元素,或可能出现其中一样甚至多样,当如此定义:
<!ELEMENT TT(#PCDATA|ASD)>

8,906

社区成员

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

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