XML技术讲座之三 XML DTD的建立与使用(上)

Posted on 2005-05-17 16:32  lanbin  阅读(467)  评论(0)    收藏  举报

XML的精髓是允许文档的编写者制定基于信息描述、体现数据之间逻辑关系的自定义标记,确保文档具有较强的易读性、清晰的语义和易检索性。因此,一个完全意义上的XML文档不仅仅是“格式良好的”,而且还应该是使用了一些自定义标记的“有效的”XML文档,也就是说,它必须遵守文档类型定义DTD中已声明的种种规定。

DTD描述了一个置标语言的语法和词汇表,也就是定义了文档的整体结构以及文档的语法。简而言之,DTD规定了一个语法分析器以解释一个“有效的”XML文档所需要知道的所有规则的细节。

DTD的使用

一个DTD可以是内部的,包含在XML文档的前导说明部分;也可以是外部的,作为一个外部文档被引用。一个包含内部DTD的XML文档的结构为:

< ?xml version = "1.0" encoding="GB2312" standalone
= "yes"?>
< !DOCTYPE 根元素名[
元素描述
]>
文档体.......

外部DTD的好处是:它可以方便高效地被多个XML文档所共享。只要写一个DTD文档,就可以被多个XML文档所引用。使用外部DTD的XML文档的结构为:

< ?xml version = "1.0" encoding="GB2312"
standalone = "no"?>
< !DOCTYPE 根元素名SYSTEM "外部DTD
文件的URL">
文档体.......

实际上,SYSTEM不是引用外部DTD的唯一方法,这个关键字主要用于引用一个作者或组织所编写的众多XML文档中通用的DTD。还存在另一种外部DTD:一个由权威机构制订的、提供给特定行业或公众使用的DTD。因此,引用外部DTD的另一个方法是使用关键字PUBLIC,引用公开给公众使用的DTD,在DOCTYPE中说明的形式为:

< !DOCTYPE 根元素 PUBLIC "DTD名称" " 外部DTD的URL">

DTD中元素类型的声明

DTD中使用元素类型声明ETD(Element Type Declaration)来声明所有有效的文档元素。ETD应该采用如下的结构:

< !ELEMENT 元素名 元素内容描述>
XML的标准将元素按内容划分为四类:

(1) 空元素类型。定义方式为:
< !ELEMENT 元素名 EMPTY>
这类元素在XML文档中使用空元素标记,元素中没有内容。

(2) ANY元素类型。定义方式为:
< !ELEMENT 元素名 ANY>
XML文档里该元素中可以包含任何内容。建议一般只把文档的根元素规定为ANY类型。

(3) 父元素类型
这类元素中可以包含子元素,在DTD中通过正则表达式规定子元素出现的顺序和次数。语法分析器将这些正则式与XML文档内部的数据模式相匹配,判别出一个文档是否是“有效的”。 在下表中,我们列出了正则表达式中可能出现的元字符。

(4) 混合元素类型
这类元素中可以包含文本,同时文本之间可以有选择地插入子元素,但子元素出现的顺序和次数不受限制。它的定义方式是:
< !ELEMENT 元素名 (#PCDATA | 子元素名1 | 子元素名2 | ...)>

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3