一、 文档类型声明:
a) 内部DTD的声明:
DTD定义语句与XML文档在同一文档,通常放在头部。格式如下:
<!DOCTYPE root_tag[
<!ELEMENT xxx (…)>
…
]>
注意在DOCTYPE后面跟的是根标记的名字。
b) 外部DTD的声明:
i.
<!DOCTYPE root_tag SYSTEM “*.dtd”>
<!ELEMENT xxx (…)>
…
ii. 参数SYSTEM表明该DTD文档是一份私有DTD;
参数PUBLIC表示该DTD文档是一份公有DTD,而且多了一个参数”LIST”,称为DTD的名字,用于标志一个DTD。一些应用程序处理DTD时会根据名字先到自己的DTD文档库中查找,当找不到时才到后一个参数指定的路径上去查找。
c) 外部DTD与内部DTD联合使用:
<!DOCTYPE root_tag SYSTEM “*.dtd” [
<!ELEMENT xxx (…)>
…
]>
当内部DTD和外部DTD在标记的定义和文档的结构定义方面发生冲突时,以内部DTD的定义为准。
二、 元素声明的语法:没有声明的就是禁止的
a) #PCDATDA型数据:标记的内容是可解析文本(不包含标记的文本),定义为#PCDATA型的标记是叶子标记,不能具有任何子标记或其他的不可解析性数据内容。
b) ANY:当很难确定一个标记的类型时可以先定义为ANY,但尽量少用(与XML文档的数据结构性相违背)。
c) +:一个或多个;
*:0个或多个;
?:0个或一个;
(tag1|tag2)+:tag1和tag2可以任意组合,只要有一个出现至少一次即可。
(tag1, tag2)*:tag1和tag2作为一个整体,要么同时出现,要么同时不出现,且出现次数与顺序要严格符合定义。