XML文件里面的DTD是什么?

1.DTD 为英文Document Type Definition,中文意思为“文档类型定义”。

2.DTD 肩负着两重任务:一方面它帮助你编写合法的代码,可以对xml的格式进行规范,

另一方面它让浏览器正确地显示器代码。

3.DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。 

4.DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。'
如何编写DTD文件? 可用内部DTD文件和也可引用外部DTD文件.
以下为内部DTD文件示范 (较简单演示一下,哈哈)
<?xml version="1.0" encoding="UTF-8"?> 
<!-- 内部的DTD约束 -->
<!--    ANY 可包含任何标签 -->
<!--    #PCDATA  -->


<!-- 子节点属性: -->
<!-- #required :必须设置 -->
<!-- #implied:不是必须的 -->
<!-- #Fixed Value 值是固定的 -->
<!--  --> 
   
<!-- <!DOCTYPE 根节点[ -->
<!-- <!ELEMENT 根节点 (子节点+)> -->
<!-- <!ELEMENT 子节点 (子节点里面的属性)> -->
<!-- <!ELEMENT 属性1 (#PCDATA)> -->
<!-- <!ELEMENT 属性2 (#PCDATA)> -->
<!-- <!ELEMENT 属性3 (#PCDATA)> -->
<!-- <!ELEMENT 属性4 (#PCDATA)> -->
<!-- <!ATTLIST 属性X 自定义的属性名 CDATA #REQUIRED> -->     <!-- 解释:定义这个属性X里必须存在你自定义的属性 -->
<!-- ]> -->

  
<!--火车示例:  -->
<!DOCTYPE Train[
<!ELEMENT Train (traindeteil+)>
<!ELEMENT traindeteil (carNumber,startPlace,endPlace,startTime,arriveTime)>
<!ELEMENT carNumber (#PCDATA)>
<!ELEMENT startPlace (#PCDATA)>
<!ELEMENT endPlace (#PCDATA)>
<!ELEMENT startTime (#PCDATA)>
<!ELEMENT arriveTime (#PCDATA)>
<!ATTLIST carNumber tid CDATA #REQUIRED>
]>

<Train>
<traindeteil>
<carNumber tid="1"></carNumber>
<startPlace>上海</startPlace>
<endPlace>长沙</endPlace>
<startTime>2018/5/25 20:00</startTime>
<arriveTime>2018/5/25 01:30</arriveTime>
</traindeteil> 

<traindeteil>
<carNumber tid="2"></carNumber>
<startPlace>上海</startPlace>
<endPlace>长沙</endPlace>
<startTime>2018/5/23 5:00</startTime>
<arriveTime>2018/5/23 10:30</arriveTime>
</traindeteil> 

<traindeteil>
<carNumber tid="3"></carNumber>
<startPlace>上海</startPlace>
<endPlace>长沙</endPlace>
<startTime>2018/5/25 11:00</startTime>
<arriveTime>2018/5/25 16:30</arriveTime>
</traindeteil> 
</Train>

假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:<!DOCTYPE 根元素 SYSTEM "文件名">这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:<?xml version="1.0"?>
以下为引用外部DTD文件示例(也以火车为例)
<?xml version="1.0" encoding="UTF-8"?> 
<!-- 外部的DTD约束 -->
<!DOCTYPE Train SYSTEM "Train.dtd">
<!-- 
如何引用外部文件
<!DOCTYPE 节点名 SYSTEM "引用外部文件的文件名"> -->
  
<Train>
<tt>
<Mynumber tid="1"></Mynumber>
<beginPlace>上海</beginPlace>
<endPlace>长沙</endPlace>
<begintime>2018/3/21 10:00</begintime>
<endTime>2018/3/21 15:30</endTime>
</tt>

<tt>
<Mynumber tid="002"></Mynumber>
<beginPlace>上海</beginPlace>
<endPlace>郴州</endPlace>
<begintime>2018/3/21 10:00</begintime>
<endTime>2018/3/21 11:30</endTime>
</tt>

<tt>
<Mynumber tid="003"></Mynumber>
<beginPlace>长沙</beginPlace>
<endPlace>郴州</endPlace>
<begintime>2018/3/21 10:00</begintime>
<endTime>2018/3/21 17:30</endTime>
</tt>
</Train>
自我总结: DTD相当于是一种模板,对XML文档进行有关约束的模板.不管是良好的XML文档或有效的XML文档都需要进行校验,校验的其中一种包含了DTD校验.

猜你喜欢

转载自blog.csdn.net/qqqnzhky/article/details/80457709