文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
声明元素
在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:
<!ELEMENT 元素名称 类别> [类别可为:EMPTY、(#PCDATA)、ANY]
或者
带有 DTD 的 XML 文档实例
<?xml version="1.0"?> <!DOCTYPE note[ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget themeeting!</body> </note>
!DOCTYPE note (第二行)定义此文档是note 类型的文档。!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
!ELEMENT to (第四行)定义 to 元素为"#PCDATA" 类型
!ELEMENT from (第五行)定义 from 元素为"#PCDATA" 类型
!ELEMENT heading(第六行)定义 heading 元素为 "#PCDATA" 类型
!ELEMENT body (第七行)定义 body 元素为"#PCDATA" 类型
PCDATA 的意思是被解析的字符数据(parsedcharacter data),PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记
CDATA 的意思是字符数据(characterdata)。CDATA 是不会被解析器解析的文本
<!ELEMENT note(#PCDATA|to|from|header|message)*[可以加后缀:?、*、+]>
上面的例子声明了:"note"元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。
声明属性
属性声明使用下列语法:
以下是属性类型的选项:
类型 描述
CDATA 值为字符数据 (character data)
(en1|en2|..) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
NOTATION 此值是符号的名称
xml: 值是一个预定义的XML 值
默认值参数可使用下列值:
值 解释
值 属性的默认值
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的
声明实体
语法:
<!ENTITY 实体名称 "实体的值">