XML学习笔记(二)-- DTD格式规范
标签(空格分隔): 学习笔记
XML的一个主要目的是允许应用程序之间自由交换结构化的数据,因此要求XML文档具有一致的结构、业务逻辑和规则。可以定义一种模式来定义XML文档的结构,并借此验证XML文档的有效性。
定义XML文档结构有两种解决方案:一种是采用文档类型定义DTD;另一种是采用XML Schema。
DTD的基本结构
DTD是用来规范XML文件的格式,必须出现在头文件中,一遍XML校验器在一开始便可以得到XML文件的格式定义。DTD是一套关于标记符的语法规则,它定义了可用在文档中的元素、属性和实体,以及这些内容之间的关系。
DTD的基本结构
DTD语法格式如下:
<!DOCTYPE 根元素名称[
<!ELEMENT 子元素名称(#PCDATA)>
]>
参数说明:
<!DOCTYPE
:文档类型声明的起始定界符;根元素名称[
:一个XML文档只有一个根元素,如果XML文档使用DTD,那么根元素的名称就在这里指定;<!ELEMENT子元素名称(#PCDATA)>
:用来定义出现在文档中的元素;]>
:文档类型声明的结束界定符。
DTD中的定义元素
包括元素名称、构成元素基本类型和元素内容类型。
声明元素类型
语法如下:
<!ELEMENT 元素名 元素内容>
- ELEMENT:是关键字,表示对元素类型进行声明;
- 元素名:为当前元素指定元素名称;
- 元素内容:元素后面的内容用来指定元素的内容类型,分为
EMPTY
,子元素类型
,混合型
,ANY
,PCDATA
5中类型。
DTD中的元素限定符
元素限定符用于在DTD中规定子元素出现的顺序和次数。
常用的元素限定符有:
()
- 用来给元素分组;|
- 在列出的元素中选择一个;+
- 可出的元素至少出现1次(1或多次);*
- 列出的元素允许出现0次到任意多次(0或多次);?
- 列出的元素出现0次或1次,;,
- 列出的元素必须按照指定的顺序出现。
DTD中的定义属性
元素属性包括属性名称、变量类型、预定义属性等。
属性的声明
<!ATTLIST Element_name
Attribute_name TYPE [added_declare]
Attribute_name TYPE [added_declare]
....
>
属性的类型
在DTD中声明属性的语法格式时属性类型是属性声明中所必须的,常用的属性类型有:
CDATA
: 字符数据;ID
: 该属性值在XML文档中是唯一的;IDREF
: 该属性值参考了XML文档中的另一个属性;ENTITY
: 表示该属性的设定值是一个外部实体,如一个图片文件;NMTOKEN
: 属性值只能由数字、字母、下划线、连字符等符号构成;NOTATION
: 属性值是在DTD中声明过的注解名称;Enumerat
: 列出能够赋予该属性的各种值的列表,只能从中选择属性值。
在DTD中声明XML的元素必须是字符串类型时,应该使用
#PCDATA
(在ELEMENT标签中使用);声明属性的属性值必须是字符串时,应该使用CDATA
(在ATTLIST标签中使用)。
DTD中的试题
XML中预定义的常规实体引用"<" ">" "&" "'" "quot;"
分别对应着 "<" ">" "&" "'" """
.
普通内部实体
<!ELEMENT Entity_Name Entity_Value>
普通外部实体
<!ELEMENT Entity_Name SYSTEM Entity_URL>