-
可扩展标记语言(Extensible Markup Language)
-
默認字符集:UTF-8
-
DTD(Document Type Definition,文档类型定义)是一套标记的语法规则,它定义了元素、子元素、属性及其取值,规定了用户在DTD关联的XML文档中可以使用什么标记、各个标记出现的顺序以及标记的层次关系,并定义了实体。




值
含义
#REQUIRED
用来告诉XML解析程序,该元素的所有实例都必须有该属性的值,就像数据表中某一个字段为NOT NULL一样
#IMPLIED
表示如果该元素的实例中没有指定该元素的值的话,就忽略该属性,就像在数据表中某一个字段的值可以为NULL一样
#FIXED value
表示包含该属性的元素实例必须在指定列出的值中
比如一个属性名称为学员:学员 CDATA #FIXED "张三“ 表示属性值只能取“张三”
Defaultvalue
为属性提供一个默认的值。
比如一个属性名称为学员:学员CDATA "张三"
如果在该属性的实例中没有包含这个属性的话,解析器就认为该属性的值就是“张三”,如果在该属性的实例中包含了这个属性并赋值了的话,就采用这个赋值
类型
具体的含义说明
CDATA
这个类型表明该属性只能包含字符数据
ID
该属性的取值必须是唯一的,在一个文档内两个ID属性的值不能一样
IDREF、IDREFS
这个属性的值实际上就像C++中的指针一样,它是一个指向文档中其他地方声明的ID值,所以,如果在具体的文档中该属性的取值和它所指向的ID值不匹配的话,就会返回错误。IDREFS和IDREF类似,但是可以具有由空格分隔的多个引用
ENTITY、ENTITIES
ENTITY属性的值必须对应一个在DTD文档内声明的但还没有分析过的实体。ENTITIES属性和ENTITY类似,不同的是它可以包含多个实体,每一个实体之间可以用空格进行分隔。需要注意的是实体包括普通实体、外部实体、参数实体和外部参数实体。可以把实体理解为程序设计语言中的变量
NMTOKE、NMTOKENS
NMTOKEN是CDATA的一个子集,它所使用的字符必须是字母、数字、句点、破折号、下划线或冒号。NMTOKENS和NMTOKEN类似,不同之处在于它可以包含多个值,每个值之间用空格进行分隔
NOTATION
NOTATION的值必须引用已在DTD文档其他地方声明过的某注解的名称
NOTATION(enumerated)
该属性的值必须匹配NOTATION名称列表中的某个名称。比如,我们已经存在两个NOTATION,一个为beauty,一个为beast;我们可以定义一个属性类型为NOTATION(beauty|beast)
Enumerated
该属性几乎和C++中的枚举变量一样,我们事先定义好一些值,该属性的值必须匹配所列出的这些值。比如现在有值为美丽、温柔、纯洁、智慧,该属性的类型就可以表现为(美丽|温柔|纯洁|智慧),实际内容文档必须从这些值中取一个,值之间用“|”进行分隔
-
一个DTD文件可以与多个XML文档联系起来。这样,这些XML文档就具有相同的DTD模板,其元素、元素属性、元素排列顺序、元素内容都必须符合DTD定义的格式。该DTD文档可以根据用户的实际需求创建,以适应特定的应用业务领域。
-
将DTD与XML文档关联的方式有三种:
-
使用内部DTD
-
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE 家庭 [
<!ELEMENT 家庭 (人+,家电*)>
<!ELEMENT人 EMPTY>
<!ELEMENT 家电 EMPTY>
<!ATTLIST 人
名字 CDATA #REQUIRED
性别 (男|女) #REQUIRED
年龄 CDATA #REQUIRED
爱好 CDATA #IMPLIED
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
说明 CDATA #IMPLIED
>
]>
<家庭>
<人 名字="郭大路" 性别="男" 年龄="25"/>
<人 名字="李寻欢" 性别="男" 年龄="38" 爱好="作个教育家和伟人"/>
<家电 名称="彩电" 数量="3"/>
</家庭>
-
-
使用外部DTD
-
使用公共DTD
-
-
XML文档类型声明出现在XML文档的序言部分,以字符串“<!DOCTYPE”开始,然后是根元素的名字,最后会依据不同的DTD使用方式而有所不同。
本文深入探讨了可扩展标记语言(XML)及其与文档类型定义(DTD)的关系,详细解释了DTD如何规范XML文档的结构和内容,包括元素、属性、实体等的定义与使用。

1603

被折叠的 条评论
为什么被折叠?



