Document Type Definition(DTD,文档类型定义)
引入DTD的3种方式:内部,外部,公用。
内部DTD格式
<?xml version="1.0" encoding="GBK" standalone="yes" ?>
<!DOCTYPE 根元素名[
元素描述
]>
文档主体
外部DTD格式
<!DOCTYPE 根元素名
SYSTEM “外部DTD的URL”>
公用DTD格式
<!DOCTYPE 根元素名
PUBLIC “DTD的标识名" "公用DTD的URL”>
DTD文档结构
DTD使用的元素:
<!ELEMENT...>:定义一个XML元素。
<!ATTLIST...>:定义一个属性。
<!ENTITY...>:定义一个实体。
<!NOTATION...>定义一个符号。
元素的类型:
ANY:任意。
(#PCDATA):字符串。
EMPTY:空元素。
混合类型
e,g,
<!ELEMENT 元素名 ANY> <!ELEMENT 元素名 (#PCDATA)> <!ELEMENT 元素名 EMPTY>
<!ELEMENT 元素名 (#PCDATA | 子元素1 | 子元素2...)
定义子元素
有序的子元素
<!ELEMENT 元素名 (子元素1,子元素2,子元素3)>
互斥的子元素<!ELEMENT 元素名 (子元素1|子元素2|子元素3)>
可在子元素后跟随一个表示频率的特殊标记(+、*、?)
定义元素的属性
格式如下
<!ATTLIST 所属的元素 属性名 属性类型 [属性的约束] [默认值]>
属性的类型
CDATA:字符串数据。
(en1 | en2 | en3):一系列枚举值之一。
ID:标识符。
IDREF:引用另一个ID。
IDREFS:引用多个已有的ID,空格为分隔符。
NMTOKEN:必须是合法的XML名称,只能由字母、数字、_、-、.、:组成。
NMTOKENS:多个NMTOKEN,空格为分隔符。
ENTITY:外部实体。
ENTITIES:多个外部实体,空格为分隔符。
NOTATION:声明过的符号,少用。
xml:预定义的XML值。
属性的约束规则
#REQUIRED:必须属性。
#IMPLIED:非必须属性。
#FIXED:值固定属性。
定义一个实体
实体就是一个字符串代替另一个字符串。
普通实体定义格式:
<!ENTITY 实体名 "实体值">
普通实体使用格式:
&实体名;
定义参数实体格式:
<!ENTITY % 实体名 "实体值">
使用参数实体格式:
%实体名:
外部实体定义格式:
<!ENTITY 实体名 SYSTEM|PUBLIC "实体值所在文件的URL">
外部参数实体格式:
<!ENTITY % 实体名 SYSTEM|PUBLIC "实体值所在文件的URL">
定义符号
XML文档只是一个文本文件,它无法处理复杂的数据类型,比如声音、图片等,符号正是用于标识这些数据。
标识后的数据可以由相应的外部程序处理。
定义普通符号的格式:
<!NOTATION notation SYSTEM "value">
定义公共符号的格式:
<!NOTATION notation PUBLIC "name" "value">