一、DTD:
<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>
<!ENTITY NEWSPAPER "Vervet Logic Times">
<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">
二、XML:
引用DTD有两种方式,一种是将DTD包含于XML源文件中;另一种是封装在一个 DOCTYPE 定义中。
<!DOCTYPE 根元素 SYSTEM "文件名">
文件名是XML源文件的相对位置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE NEWSPAPER SYSTEM "./test.dtd">
<NEWSPAPER>
<ARTICLE>
<HEADLINE></HEADLINE>
<BYLINE></BYLINE>
<LEAD></LEAD>
<BODY></BODY>
<NOTES></NOTES>
</ARTICLE>
<ARTICLE AUTHOR="wj" EDITOR="">
<HEADLINE></HEADLINE>
<BYLINE></BYLINE>
<LEAD></LEAD>
<BODY></BODY>
<NOTES></NOTES>
</ARTICLE>
</NEWSPAPER>
三、JavaScript:
<html>
<body>
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")//创建一个xml dom对象,仅适用于IE浏览器
xmlDoc.async="false"//是否异步性
xmlDoc.validateOnParse="true"
xmlDoc.load("test.xml")
if (xmlDoc.parseError.errorCode != 0) {
txt = "Error Code: " + xmlDoc.parseError.errorCode + "\n";
txt = txt + "Error Reason: " + xmlDoc.parseError.reason;
txt = txt + "Error Line: " + xmlDoc.parseError.line;
alert(txt);
}
else {
alert('No errors found');
}
</script>
</body>
</html>
运行如图所示: