XMl文档是一种结构化的标记文档,定义XML文档结构有以下两种形式,一种是DTD(Document Type Definition)文档类型定义,另一种是文档Schema模式定义。
一 DTD 文档类型定义
1 DTD文档类型定义是一套关于标记符的语法规则,用于定义可用在XML文档中的元素、属性和实体,以及这些
之间的相互关系 。
语法如下:
参数说明:
name:一个
的XML标记的名称
content:可以是EMPTY、ANY或者是描述包含在本元素中的子元素的顺序和重复次数的内容模型。
5种内容模型和元素出现次数指示符
1)EMPTY类型
EMPTY 类型用于定义空元素,即说明该元素只能有属性不能有字符数据或者子元素
2)ANY类型
ANY 类型
明该元素可以包含DTD中定义的其他任何元素或者是已编译的字符数据。
3)#PCDATA类型
#PCDATA类型表明该元素中不包含其他子元素而只包含字符数据
4)子元素类型
子元素类型表明元素可以包含一系列的子元素,子元素类型有两种结构:顺序结构和选择结构
顺序结构:指子元素必须按照定义的顺序出现,并且只能出现一次
选择结构:指子元素是定义元素集合中的一个,但不能包含其中的两个或者更多
5)混合类型
混合类型是指元素及包含子元素又包含已编译字符数据
混合内容必须遵循以“#PCDATA”开始,后面是混合内容中可能出现的子元素类型,在左括号之后加符号“*”
6)元素出现次数指示符
使用元素出现次数指示符可以指定元素出现的次数,元素出现的次数指示符有3种:
1 “?”字符,说明元素可以出现0次或者1次
2 “*”字符,说明元素可以不出现、出现1次或者出现多次
3 “+”字符,说明元素必须出现至少一次
2 DTD可以定义元素的属性,属性声明语法如下:
参数说明:
ATTLIST:用于定义元素所具有的属性
Element_name:元素名称
Attribute_name:元素所具有的属性名
Type:属性的类型
Default_value:属性的默认值
属性声明中的7种属性类型:
CDATA:表明属性值只能为文本字符串
POSITION:枚举属性类型,指定属性值为定义的文本字符串中的一个
ID:用于标识文档中的元素
IDREF/IDREFS:IDREF用于引用同一文档中另一元素的属性;IDREFS是IDREF的复数形式,属性值是若干个ID属性值,属性值之间用空格分开。
NMTOKEN/NMTOKENS:NMTOKEN属性值为一个有效的XML名称;NMTOKENS是NMTOKEN的复数形式,属性值可以包含若干个有效地XML名称,每个XML名称之间用空格分隔。
ENTITY/ENTITYS:ENTITY用于引用文档中的不可解析的外部实体,属性值为一个有效的实体名称;ENTITYS是ENTITY的复数形式,属性值是包含若干个有效的实体名称的列表,每个实体之间用空格分开
NOTATION:用于将属性值和DTD中的相关联
属性声明中的属性的默认值:
REQUIRED:属性默认值,元素属性声明为#REQUIRED,说明元素在使用时必须具有该属性,否则XML文档无效
IMPLIED:属性默认值,元素属性声明为#IMPLIED,说明该属性可以出现在制定元素中,也可以不使用该属性
FIXED:属性默认值。原
属性声明为#FIXED说明可以不用明确指定属性值,如果明确指定属性值,改值应该是属性定义时给出的默认值
3 DTD可以包含在XML文档中,也可以独立为一个文件,根据其位置,可以分成内部DTD和外部DTD
1) 内部DTD
将DTD定义在XML文档的内部,就构成了内部DTD
语法:
....
]
>
2) 外部DTD
可以将DTD放在XML文档的外部,一个DTD文件可以提供给多个XML文档使用,DTD文档的扩展名为.dtd。
在XML文档中引用DTD文件的语法为:
二 Schema 文档规则
Schema文档规则使用的是一种类似XML的语言,在Schema模式定义中既有全局声明也有局部声明。Schema模式具有一套完整的数据类型定义系统,允许对数据类型进行详细定义。Schema模式是一个文本文件,独立于XML文档,扩展名为.xsd。
三 验证XML
1 符合语法的XML文档称为结构良好的XML文档。
通过DTD验证的XML文档称为有效的XML文档。
2 "结构良好的" XML文档
一个结构良好的XML文档应该使用正确的语法。
3 "有效的" XML文档
一个有效的XML文档应该遵守DTD的描述。
一个有效的XML文档也是一个结构良好的XML文档,同时还必须符合DTD的规则。
DTD的意图在于定义XML文档的合法建筑模块。他通过定义一系列合法的元素决定了XMl文档的内部结构。结构良好的XML文档不一定是有效的XML文档,但有效的XML文档一定是结构良好的XML文档。
XML Schema(XML模式)是基于XML的DTD的替代品。W3C使得DTD和Schema可以相互替代
四 错误
XML文档中发生的错误将导致XML程序停止。
W3C的XML
声明:如果程序在处理XML文档中发现一个有效的错误,那么此程序应该终止。这就是XML软件相对于容易编写的原因。所有的XML文档地都应该是协调一致的。
在HTML中,HTML文件可能包含很多错误,(比如一个元素有开始标记没有结束标记)这也是HTML浏览器体积之所以很大的一个原因,当他们发现错误的时候,他们有各自不同的方法来决定此HTML文件应该如何显示。在XML中决不会发生这种情况。