文档类型定义(DTD)可定义合法的XML文档构建模块。它使用1系列合法的元夙来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为1个外部援用。
声明元素
在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:
<!ELEMENT 元素名称 种别> [种别可为:EMPTY、(#PCDATA)、ANY]
或
<!ELEMENT 元素名称 (元素内容)>
带有 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 (第2行)定义此文档是note 类型的文档。!ELEMENT note (第3行)定义 note 元素有4个元素:"to、from、heading,、body"
!ELEMENT to (第4行)定义 to 元素为"#PCDATA" 类型
!ELEMENT from (第5行)定义 from 元素为"#PCDATA" 类型
!ELEMENT heading(第6行)定义 heading 元素为 "#PCDATA" 类型
!ELEMENT body (第7行)定义 body 元素为"#PCDATA" 类型
PCDATA 的意思是被解析的字符数据(parsedcharacter data),PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体和标记
CDATA 的意思是字符数据(characterdata)。CDATA 是不会被解析器解析的文本
<!ELEMENT note(#PCDATA|to|from|header|message)*[可以加后缀:?、*、+]>
上面的例子声明了:"note"元素可包括出现零次或屡次的 PCDATA、"to"、"from"、"header" 或 "message"。
声明属性
属性声明使用以下语法:
<!ATTLIST 元素名称 属性名称 属性类型 默许值>
以下是属性类型的选项:
类型 描写
CDATA 值为字符数据 (character data)
(en1|en2|..) 此值是枚举列表中的1个值
ID 值为唯1的 id
IDREF 值为另外1个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是1个实体
ENTITIES 值是1个实体列表
NOTATION 此值是符号的名称
xml: 值是1个预定义的XML 值
默许值参数可以使用以下值:
值 解释
值 属性的默许值
#REQUIRED 属性值是必须的
#IMPLIED 属性不是必须的
#FIXED value 属性值是固定的
声明实体
语法:
<!ENTITY 实体名称 "实体的值">