1、DTD
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。
2、什么是XML
XML 指可扩展标记语言(eXtensible Markup Language)。
可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等
1、XML 与 HTML 的主要差异
-
XML 被设计为传输和存储数据,其焦点是数据的内容。
-
HTML 被设计用来显示数据,其焦点是数据的外观。
-
HTML 旨在显示信息,而 XML 旨在传输信息。
3.XML的两种文档约束
XML文档定义分为 Schema 和 DTD 两种形式
-
Schema 是对XML文档结构的定义和描述,其主要的作用是用来约束XML文件,并验证XML文件有效性。
-
DTD 的作用是定义XML的合法构建模块,它使用一系列的合法元素来定义文档结构。
4.XML格式要求
-
XML 元素都必须有关闭标签
-
XML 标签对大小写敏感
-
XML 必须正确地嵌套
-
XML 文档必须有根元素,有且只有一个
-
XML 的属性值须加引号
-
XML中的特殊字符处理
5.使用DTD
5.1.在XML中加入DTD申明
1、内部的 DOCTYPE 声明
公式:
<!DOCTYPE 根元素 [元素声明]>
案例如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE persons [
<!ELEMENT persons (person*)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|mail|wechat)>
<!ELEMENT br EMPTY>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT wechat (#PCDATA)>
<!ELEMENT mail (#PCDATA)>
<!ATTLIST person
pid ID #REQUIRED
paddr CDATA #IMPLIED
psex (男|女|妖) "男"
>
] >
<persons>
<person pid="p01" paddr="" psex="男">
<name>张三</name>
<age>22</age>
<contact>
<phone>15882821111</phone>
</contact>
<br/>
</person>
<person pid="p02">
<name>李四</name>
<age>23</age>
<contact>
<wechat>123@qq.com</wechat>
</contact>
</person>
</persons>
2、外部文档声明
公式:
<!DOCTYPE 根元素 SYSTEM "文件名">
案例如下:
新建一个file文件,将内部中的元素声明单独放入即可,名字我这里取的是fid.dtd
<!ELEMENT persons (person*)>
<!ELEMENT person (name,age,contact,br?)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT contact (phone|mail|wechat)>
<!ELEMENT br EMPTY>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT wechat (#PCDATA)>
<!ELEMENT mail (#PCDATA)>
<!ATTLIST person
pid ID #REQUIRED
paddr CDATA #IMPLIED
psex (男|女|妖) "男"
>
引用外部文件即可
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE persons SYSTEM "fid.dtd">
<persons>
<person pid="p01" paddr="" psex="男">
<name>张三</name>
<age>22</age>
<contact>
<phone>15882821111</phone>
</contact>
<br/>
</person>
<person pid="p02">
<name>李四</name>
<age>23</age>
<contact>
<wechat>123@qq.com</wechat>
</contact>
</person>
</persons>
5.2.元素定义语法
<!ELEMENT 元素名称 元素类型>
5.3.元素的分类
类型:
(1)空元素:EMPTY
<!ELEMENT 元素名称 EMPTY>
(1)文本元素:(#PCDATA)
<!ELEMENT 元素名称 (#PCDATA)>
(1)混合元素:(子元素名称1,子元素名称2,...)
<!ELEMENT 元素名称 (子元素名称1,子元素名称2,...)>
5.4.元素的限制
什么的不指定,代表默认一次。
5.5.属性定义语法
基本语法:
<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
属性类型:
设置说明 :