预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共74页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7讲 2009.22009.2DTDDTD概述DTD元素声明DTD属性声明DTD实体声明DTD标记声明DTD中的测试开关DTD文件存在的问题DTD概述 为什么引入文档类型定义 1.对xml的文档进行约束,不允许你随心所欲的编写你的文档。它规定的就是你所写的文档的格式(type),来确定标记、元素、属性和实体等内容。 2保证文档的正确性、有效性。 3解释记录结构的说明和方法,使得发送方和接收方有对消息相同的理解。DTD概述 DTD文件格式的定义 XML文档的精髓是允许文档的编写者制定基于信息描述、体现数据之间逻辑关系的自定义标记,并确保文档具有较强的易读性、清晰的语义和易检索性。因此一个完整意义上的XML文档不仅要格式良好,而且还使用一些自定义标记。DTD概述 DTD的本质 DTD是一个语法分析器:定义了置标语言、文档结构的语法和词汇表DTD概述 DTD文件的声明语法 <!DOCTYPE根元素名称[定义的内容]> 根元素必须在“[定义的内容]”部分首先定义。即使在DTD声明中已经明确的先写出了根元素,也必须先定义 其中定义的内容包括: DTD 的元素声明 DTD 的属性声明 DTD 的实体声明 DTD 的标记声明DTD概述 我们在XML文档中所嵌入的DTD信息都是内部DTD,但是这种方式在很多情况下变得不可取。因为为每一个XML文件都编写加入一段DTD,是相当繁琐的,更多的情况下,我们为一批XML文件定义一个相同的DTD,这就是外部DTD 例如,对于报社中的每篇稿件,它们都有相同的格式,可以采用一个统一的DTD,为每一篇单独定义既麻烦,又不利于统一格式。 内部DTD内部DTD外部DTD外部DTD外部DTD内部和外部DTD2009.22009.22009.2DTD元素声明DTD元素声明DTD叶子元素声明DTD枝干元素声明DTD元素的选择声明DTD元素的选择声明选择声明在定义中指定的任何元素都可出现: <!ELEMENTRegion(city|country|continent)> 说明Region元素可以包含city、country或continent元素,但不是必须 选择和顺序可以合并使用,如下: <!ELEMENTatlas((city|country|continent),population,language)> 符合这个DTD要求的XML文档如下: <atlas> <country>UnitedStates</country> <population>240Million</population> <language>English</language> </atlas>书上示例:P51 char03-ex02.dtd char03-stock03.xml char03-stock03-test.xml 注意:对“神龙电业”和“武商股份”的任意组合都行综上所述,|的作用 多选多 任意顺序在文档中,元素出现的缺省值为一次,如下: <!ELEMENT文件(书籍)> 定义的结果是:在文件元素中只能包含一个”书籍”元素 但常常的情况是根元素中包含的元素不只有一个,此时就要用到量词。常用的量词有:?*+ ?:代表可以有0个或1个,即最多只能有一个. *:代表随便有几个都可以,即可以有0个到无限个 +:代表至少要有一个,没有上限,可以从一个到无限多个.量词的用法: <!ELEMENT元素名(包含元素?)> <!ELEMENT元素名(包含元素*)> <!ELEMENT元素名(包含元素+)>例如: <!ELEMENTatlas((city|country),population?,language+)> 遵守该DTD的有效XML片断如下: <atlas> <country>UnitedStates</country> <language>English</language> <language>Spanish</language> </atlas> 在这个DTD中,指定population是可选项,languange至少出现一次,实际出现了多次DTD元素的数据内容DTD元素的数据内容DTD元素的数据内容#PCDATA:该内容模型说明元素中可以出现文字数据的字符串,例如,可以将<country>Scotland</country> 指定为: <!ELEMENTcountry(#PCDATA)> Any:ANY关键字表明DTD中声明的任何元素或数据都可以作为该元素的子元素,例如,可以将capitals根定义为: <!ELEMENTcapitalsANY> 但一般情况下除根元素外不建议使用该属性. 书上示例:P54 char03-bookist01.xml char03-any.dtd char03-any-tes