文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
XML 文档构建模块
所有的XML文档(以及HTML文档)均由以下简单的构建模块构成:元素、属性、实体、PCDATA、CDATA。
DTD-元素:
在一个 DTD 中,元素通过元素声明来进行声明。
声明一个元素:在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:<!ELEMENT 元素名称 类别> 或者 <!ELEMENT 元素名称 (元素内容)>
空元素:空元素是通过类别关键词EMPTY进行声明,
<!ELEMENT元素名称 EMPTY>
只有PCDATA的元素。只有PCDATA的元素通过圆括号中的#PCDATA进行声明:<!ELEMENT 元素名称 (#PCDATA)>
带有子元素(序列)的元素。带有一个或者多个子元素的元素通过圆括号的子元素名进行声明:<!ELEMENT 元素名称 (子元素名称1)> 或者 <!ELEMENT元素名称 (子元素名称1,子元素名称2……)>
声明只出现一次的元素。<!ELEMENT 元素名称 (子元素名称)>
声明最少出现一次的元素。<!ELEMENT 元素名称 (子元素名称+)>
声明出现零次或一次的元素。<!ELEMENT 元素名称 (子元素名称?)>
声明出现零次或多次的元素。<!ELEMENT 元素名称 (子元素名称*)>
声明“非…/既…”类型的内容。<!ELEMENT note(to,from,header,(message|body))>,其中,to元素、from元素、header元素是note必须包括元素。以及非 "message" 元素既 "body" 元素。
声明混合型的内容。<!ELEMENT note(#PCDATA|to|from|header|message)>”note”元素中可包含出现零次或多次的各元素
DTD-属性
在 DTD 中,属性通过 ATTLIST 声明来进行声明。
声明属性。<!ATTLIST 元素名称属性名称 属性类型 默认值>
#IMPLIED 语法:
<!ATTLIST 元素名称 元素名称 属性类型 #IMPLIED>
假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词#IMPLIED
#REQUIRED 语法:
<!ATTLIST 元素名称属性名称 属性类型 #REQUIRED>
假如您没有默认值选项,但是仍然希望强制作者提交属性的话,请使用关键词#REQUIRED。
#FiXED 语法:
<!ATTLIST 元素名称属性名称 属性类型 #FIXED “value”>
如果您希望属性拥有固定的值,并不允许作者改变这个值,请使用 #FIXED 关键词。如果作者使用了不同的值,XML 解析器会返回错误。
列举属性值 语法:
<!ATTLIST 元素名称属性名称 (en1|en2…)默认值>
如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。
DTD-实体
实体是用于定义引用普通文本或特殊字符的快捷方式的变量。实体引用是对实体的引用。实体可在内部或外部进行声明。
一个内部实体声明 语法:
<!ENTITY 实体名称“实体的值“>
注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。
一个外部实体声明 语法:
<!ENTITY 实体名称 SYSTEM “URT/URL”>