本文主要是介绍XML文档类型定义(DTD),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、格式良好的 XML文档
符合语法的XML文档称为结构良好的XML文档 。
2、有效XML文档
有效XML文档:内容结构严格遵守它自身的标记说明,能通过自身的语法检查;通过DTD验证的XML文档称为有效的XML文档 。
格式良好的XML文档与有效的XML文档的区别?
有效地XML文档肯定是格式良好的XML文档。反过来,一个格式良好的XML文档不一定是有效的XML文档。有效的XML文档遵守DTD或Schema定义的规则。
元素(ELEMENT)的定义规则
元素之间的关系规则
属性(ATTLIST)的定义规则
可使用的实体(ENTITY)或符号(NOTATION)规则
类与对象
数据库表结构与数据记录
6、DTD的基本结构
DTD的基本结构包括XML声明、元素(ELEMENT)声明和属性列表(ATTLIST)声明等。
7、定义元素及其后代
定义元素即对XML文档中所使用元素及其使用方法的定义。定义包括元素名称和构成元素的基本类型两部分,构成元素的基本类型包括简单类型和复合类型两种。
简单的类型:
<!ELEMENT 名称 (#PCDATA)>
符合类型:
<!ELEMENT 我的电脑 (CPU, 内存+, 硬盘+)>
8、元素的定义
元素类型声明的基本格式:
<!ELEMENT 元素名 元素内容模式>
元素内容模式
元素不能包含任何子元素,也不能包含任何数据内容。
语法:<!ELEMENT 元素名 EMPTY>
例DTD定义如下:
<!ELEMENT person EMPTY>
元素可以包含任何子元素或数据
语法:
<!ELEMENT 元素名 ANY>
声明为#PCDATA类型的元素是不包含任何其他元素而只包含字符数据即文本数据的元素;
一般语法结构为:
<!ELEMENT 元素名 (#PCDATA)>
#PCDATA示例
<!ELEMENT title (#PCDATA)>
对应的XML元素:
<title>元素的数据内容</title>
<title></title>
子元素定义集模式用来说明那些有严格层次结构包含关系的元素。利用子元素定义集模式可以说明某元素必须包含哪些子元素及其相互位置、层次关系。
有3种形式:
例如:
<!ELEMENT 我的电脑 (CPU, 内存, 硬盘)>
<!ELEMENT CPU (AMD | Intel )>
<!ELEMENT GREETINGS ((SEASON|NAME),POSTFIX)>
9、元素指示符
?修饰符:说明它所修饰的子元素组合可以出现零次或一次,即这种组合可以出现,也可以不出现。
+修饰符:说明它所修饰的子元素组合可以出现一次或一次以上的任意多次,即+修饰符所修饰的子元素组合至少必须出现一次。
*修饰符:说明它所修饰的子元素组合可以出现零次到任意多次,即*修饰符所修饰的子元素组合可以出现,也可以不出现,可以出现一次,也可以出现多次。
<!ELEMENT 我的电脑 (CPU, 内存+, 硬盘+,音响?,描述*)>
10定义元素属性
DTD中的属性声明用来定义所有元素可接受的属性。
在DTD声明元素的同时,还可以指定元素具有的属性。DTD中的属性声明不仅约束了XML文档中元素的属性名,还约束了元素的取值类型。
属性定义的一般语法:
<!ATTLIST 元素名 属性名1 属性1类型 缺省的属性1取值
属性名2 属性2类型 缺省的属性2取值
属性名3 属性3类型 缺省的属性3取值
>
元素属性的声明顺序不对XML文档构成限制,但为了便于理解和后期维护,这里建议在XML文档中的属性顺序应按照其引用的DTD中的声明顺序来排列。
11、预定义属性值
元素某属性可能是在XML文档定义时必须单独填写的,也可以是可有可无的,还可能要求必须使用某一个指定的值。这些要求决定了DTD必须分别对待不同情况。#REQUIRED、#IMPLIED、#FIXED三个关键词与上诉三种情况分别对应。
#REQUIRED
属性不能忽略,必须在元素的属性列表中出现
#IMPLIED
可选属性,可以不在元素的属性列表中出现
#FIXED
可选属性,如出现此属性,则其取值必须是固定的属性值。如忽略此属性,在验证文档后,元素将隐含此属性,其取值为固定的属性值
这篇关于XML文档类型定义(DTD)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!