xml 文档由以下5部分组成,因此dtd定义中也有以下5部分:
Elements 元素,最主要的组成部分 Attributes 属性 Entities 实体,定义了一些固定的 文本 或 字符,相当于它们的快捷方式;有一些预定义实体,具有某些特殊意义,比如 < > " ' & ,也可以自定义实体 PCDATA parsed character data ,其中如果包含特殊实体,则被当作特殊实体看待,比如 > 可能被看做 元素结束符号 CDATA character data ,其中的特殊实体,被当作普通字符看待;------
Element 子元素个数: + 表示1个或多个,? 表示0个或1个,* 表示 任意个
Element 类型如果是 EMPTY 则表示空元素
------
下面是1个dtd示例,包括 people.dtd 和 people.xml 2个文件:
people.dtd:
<!ENTITY NS "spaceflysky"> <!ENTITY TRUE "true"> <!ENTITY FALSE "false"> <!ENTITY copyright "Copyright@2008"> <!ELEMENT peoplelist (people)> <!ELEMENT people (baseinfo,forte,will,friend*,tarch,other,test)> <!ELEMENT baseinf (name+,age,sex,country)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ELEMENT country (#PCDATA)> <!ELEMENT forte (#PCDATA)> <!ELEMENT will (#PCDATA)> <!ELEMENT friend (#PCDATA)> <!ELEMENT tarch (time?,(tel|qq|address))> <!ELEMENT tel (#PCDATA)> <!ELEMENT qq (#PCDATA)> <!ELEMENT address (#PCDATA)> <!ELEMENT other (#PCDATA)> <!ELEMENT test (br)> <!ELEMENT br EMPTY> <!ATTLIST peoplelist namespace CDATA #FIXED "&NS;" copyright CDATA #IMPLIED> <!ATTLIST people enabled (true|false) "&TRUE;" alive (live|dead) #REQUIRED planet CDATA #IMPLIED>
people.xml:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE people SYSTEM "people.dtd"> <peoplelist copyright="©right;"> <people alive="live" planet="earth"> <baseinfo> <name>space</name> <age>21</age> <sex>male</sex> <country>china</country> </baseinfo> <forte></forte> <will></will> <friend></friend> <tarch> <time>any time</time> <qq>123456</qq> </tarch> <other></other> <test> <br /> </test> </people> </peoplelist>
------
下面给出一个可以检查 xml 文件语法的html文件,在IE5.5以上浏览器均可使用:
使用前修改一下xml文件的位置
<html>
<body>
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.validateOnParse="false";
xmlDoc.load("validation_test.xml");
document.write("<br />Error Code: ");
document.write(xmlDoc.parseError.errorCode);
document.write("<br />Error Reason: ");
document.write(xmlDoc.parseError.reason);
document.write("<br />Error Line: ");
document.write(xmlDoc.parseError.line);
</script>
</body>
</html>
------
一个最权威最标准的dtd教程:
http://www.w3schools.com/dtd/ 是W3C 官方教程,英文的。