一、定义
DDT(document typedefinition)
定义XML 文件的结构
为XML 文件提供语法和规则
内容既可以定义在XML 文件中,也可以定义在XML文件之外。
使用XML 进行数据交换的行业或组织可定义自己的DTD。
出现DTD的初衷:为了正确的交换数据,XML 文件需要确定的结构,SO,DTD对于XML 是可选内容。
二、形式
1、XML内置DTD.
<?xmlversion="1.0" encoding="utf-8"?>
<!DOCTYPE 书籍列表[
<!ELEMENT书籍列表(计算机书籍)*>
<!ELEMENT计算机书籍(书名,价格,简要介绍)>
<!ELEMENT书名(#PCDATA)>
<!ELEMENT价格(#PCDATA)>
<!ELEMENT简要介绍(#PCDATA)>
]>
<书籍列表>
<计算机书籍>
<书名>XML的今生今世</书名>
<价格>16.6</价格>
<简要介绍>XML的今生今世,好书</简要介绍>
</计算机书籍>
</书籍列表>
2、外部DTD
建立自己的DTD
DTD 文件写法:
<!--文件名字book.dtd-->
<?xmlversion="1.0" encoding="utf-8"?>
<!ELEMENT书籍列表(计算机书籍)*>
<!ELEMENT计算机书籍(书名,价格,简要介绍)>
<!ELEMENT书名(#PCDATA)>
<!ELEMENT价格(#PCDATA)>
<!ELEMENT简要介绍(#PCDATA)>
调用book.dtd 的XML:<!DOCTYPE 根元素 SYSTEM"文件名">
例子:<?xmlversion="1.0" encoding="utf-8"?>
<!DOCTYPE书籍列表 SYSTEM "book.dtd">
.....
共享的DTD-Public
PUBLIC属性):比如,两个相同行业不同地区的人使用同一个DTD文件来作为文档创建规范,那么他们的数据就很容易交换和共享。网上有其他人想补充数据,也只需要根据公用的DTD规范来建立文档,就立刻可以加入。
三、文件构成——模块
元素
实体
PCDATA:被解析的字符数据(parsedcharacter data)。
可把字符数据想象为XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器检查是实体还是标签。
不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;所以这时候用到了实体类,需要使用&、< 以及 > 实体来分别替换它们。
CDATA(原样输出)
CDATA的意思是字符数据(character data)。
与PCDATA 不同的是:CDATA是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
1、元素。
语法
<!ELEMENT 元素名称 类别 >
特殊元素
空元素
<!ELEMENT 元素名称 EMPTY >
@H_403_502@任何元素类型
<!ELEMENT 元素名称 ANY >
只出现一次的元素
最少出现一次
零到多次
零到一次
“或”关系
<!ELEMENT 元素名称 ((子元素名称)|(子元素名称)>
@H_403_502@混合型内容
<!ELEMENT 元素名称 (#pcdata |(子元素名称)*>
@H_403_502@和——逗号,子元素之间存在一定顺序
——|,子元素之间不存在顺序
2、属性
语法:<!ATTLIST 元素名称 属性名称 属性类型 默认值>
属性类型
#REQURED:必须要有。
#IMPLED :不必须有
#FIXED 固定的。
Web.html 根 声明顺序:严格