在XML文档中使用DTD.ppt_第1页
在XML文档中使用DTD.ppt_第2页
在XML文档中使用DTD.ppt_第3页
在XML文档中使用DTD.ppt_第4页
在XML文档中使用DTD.ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7讲,在XML文档中使用DTD,2009.2,软件技术学院,符合规则的XML语法-八条规则,文件必须以”XML声明”开始. 文件中必须有一个根元素. 标记必须成对出现. 如果标记不成对出现,必定有”/”空标记. 文件必须是树状结构. 大小写不同. 属性值设置必须用双引号括起来. 限定字需用实体引用.,2009.2,软件技术学院,有效的XML文件,一个XML文件如满足: 该文件是Well-formed; 该文件是根据DTD来设计的XML文件; 这份文件的DTD语法正确. 这份XML文件称为是Valid.,DTD,XML标准中规定XML文档应该遵守的规则: 基本规则(八条规则) XML文件结构规则(可以由DTD规定) Well-Formed XML文档:不考虑文件结构规则,但符合了其他对XML文件要求规则的文档 Valid XML文档:元素必须以定义的结构显示,并且各个元素的内容必须符合架构中指定的已声明的数据类型,DTD概述 DTD元素声明 DTD属性声明 DTD实体声明 DTD标记声明 DTD中的测试开关 DTD文件存在的问题,在XML文档中使用DTD,DTD概述 为什么引入文档类型定义 1.对xml的文档进行约束,不允许你随心所欲的编写你的文档。它规定的就是你所写的文档的格式(type),来确定标记、元素、属性和实体等内容。 2 保证文档的正确性、有效性。 3 解释记录结构的说明和方法,使得发送方和接收方有对消息相同的理解。,DTD概述 DTD文件格式的定义 XML文档的精髓是允许文档的编写者制定基于信息描述、体现数据之间逻辑关系的自定义标记,并确保文档具有较强的易读性、清晰的语义和易检索性。因此一个完整意义上的XML文档不仅要格式良好,而且还使用一些自定义标记。,DTD概述 DTD的本质 DTD是一个语法分析器:定义了置标语言、文档结构的语法和词汇表,DTD概述 DTD文件的声明语法 根元素必须在“定义的内容”部分首先定义。即使在DTD声明中已经明确的先写出了根元素,也必须先定义 其中定义的内容包括: DTD 的元素声明 DTD 的属性声明 DTD 的实体声明 DTD 的标记声明,DTD概述 我们在XML文档中所嵌入的DTD信息都是内部DTD,但是这种方式在很多情况下变得不可取。因为为每一个XML文件都编写加入一段DTD,是相当繁琐的,更多的情况下,我们为一批XML文件定义一个相同的DTD,这就是外部DTD 例如,对于报社中的每篇稿件,它们都有相同的格式,可以采用一个统一的DTD,为每一篇单独定义既麻烦,又不利于统一格式。,内部DTD,需要在XML文档中添加内部DTD声明,添加的位置必须在XML文档中的XML必要声明和文件主体之间,其约束范围也仅限于此XML文档 语法如下: 内部DTD 文档类型声明由结束,内部DTD,案例名称:内部DTD 程序名称:3-01.xml 张三 ,外部DTD,外部DTD文档是指DTD文档的格式定义放在本XML文档的外部,作为一个单独的文件来保存的。 内部DTD文档是指直接在XML文档的必要声明之后的文档格式定义。,外部DTD,使用外部DTD时,要在DOCTYPE中使用关键字SYSTEM 实际上,SYSTEM不是引用外部DTD的唯一方法,这个关键字主要用于引用一个作者或组织(私人)所编写的众多 XML文件中通用的DTD 还存在一种外部DTD,它是一个由权威机构制订的,提供给特定行业或公众使用的DTD。因此,另一个引用外部DTD的办法是使用关键字 PUBLIC,引用这一类公开给公众使用的DTD。,外部DTD,引用外部DTD文档的格式1: SYSTEM同上解释 此时的外部DTD文件的URL可以是绝对地址也可以是相对地址,后缀名为.dtd,内部和外部DTD,内部DTD文件表示DTD直接写在XML文档中,其所定义的限制就只能应用于此XML文档; 外部DTD文件是作为一个外部文件被XML文档引用,其优点是一个DTD外部文件可以被多个XML文档共享.,2009.2,内部DTD文件示例, 张祥 10000 8000 15000 6000 刘娴 ,内部DTD文档放在XML声明之后 或在处理指令后,但在数据之前,2009.2,外部DTD文件应用示例,外部DTD文件 ,XML中应用外部DTD方法 张祥 10000 8000 15000 6000 ,2009.2,外部DTD文件应用效果,表明DTD文件对XML文档起作用,使该文档不仅形式良好,而且有效.,DTD元素声明,元素声明需要说明以下问题: 元素标记 内含子元素 元素内容数据 元素架构,DTD元素声明,XML文档内容是一树状结构,所以DTD中的元素声明包括如下两种: 叶子元素声明 枝干元素声明 DTD元素的声明不仅定义了XML文档中元素的标记,而且也定义了元素之间的关系,即XML文档的结构,DTD叶子元素声明,DTD叶子元素声明语法: XML中的元素声明使用 &)时要把他们解释成实体的形式,DTD枝干元素声明,DTD枝干元素声明语法: 子元素1等表示当前元素的下一级子元素 子元素间用“,”分割开来 用“,”分割的子元素是有顺序的,输入时必须按定义顺序输入,DTD元素的选择声明,对一个元素来说,它的内容可以是元素。但是在这些元素中,有些元素是相互冲突的,也就是说,其中的一个元素存在,另一个元素就不存在。如下: 张三 安徽省 此时 元素和 元素相矛盾,有其中的一个,另一个的内容就为空浪费存储空间。而改进这种行为的有效方法就是在DTD定义中规定这两个元素的关系是选择关系。,DTD元素的选择声明,序列可以用逗号分隔开,表明必须按定义的顺序使用元素,例如: 说明country可以按照上述顺序包含name、capital和continent: Chile Santiago South America ,选择声明在定义中指定的任何元素都可出现: 说明Region元素可以包含city、country或continent元素,但不是必须 选择和顺序可以合并使用,如下: 符合这个DTD要求的XML文档如下: United States 240 Million English ,DTD元素的选择声明,书上示例:P51 char03-ex02.dtd char03-stock03.xml char03-stock03-test.xml 注意:对“神龙电业”和“武商股份”的任意组合都行,DTD元素的选择声明,综上所述,|的作用 多选多 任意顺序,DTD元素的选择声明,在文档中,元素出现的缺省值为一次,如下: 定义的结果是:在文件元素中只能包含一个”书籍”元素 但常常的情况是根元素中包含的元素不只有一个,此时就要用到量词。常用的量词有:? * + ?: 代表可以有0个或1个,即最多只能有一个. *:代表随便有几个都可以,即可以有0个到无限个 +:代表至少要有一个,没有上限,可以从一个到无限多个.,DTD元素中子元素的次数声明,量词的用法: ,DTD元素中子元素的次数声明,例如: 遵守该DTD的有效XML片断如下: United States English Spanish 在这个DTD中,指定population是可选项,languange至少出现一次,实际出现了多次,DTD元素中子元素的次数声明,DTD元素的数据内容,前面讲过,DTD中的元素声明包括如下两种: 叶子元素声明: 枝干元素声明 ,DTD元素的数据内容,元素的内容通常有四种情况:EMPTY ELEMENT ANY PCDATA 混合和元素 Empty:元素可以有空内容模型,例如:可以将指定为: 。 在此,规定元素是空元素,只可能有属性而不会有字符数据或者子元素,DTD元素的数据内容,Element:用于指定元素可以包含其它元素,规定元素只是子元素的集合,而没有字符数据,例如,将 指定为: ,#PCDATA:该内容模型说明元素中可以出现文字数据的字符串,例如,可以将Scotland 指定为: ,DTD元素的数据内容,Any:ANY关键字表明DTD中声明的任何元素或数据都可以作为该元素的子元素,例如,可以将capitals根定义为: 但一般情况下除根元素外不建议使用该属性.,DTD元素的数据内容,书上示例:P54 char03-bookist01.xml char03-any.dtd char03-any-test.xml 注意:对“神龙电业”和“武商股份”的任意组合都行,DTD元素的数据内容,进入网站的时候,经常需要注册用户名,编写一个XML文档用来记录这些信息。 包括:用户名,密码,密码提示问题,密码提示答案,邮件地址,所在城市,省份,直辖市,国家等信息。 规定用户名和密码必须是唯一的,密码提示问题和密码提示答案可有可无,邮件地址必须有并可以有多个,地址中省份和直辖市是选择关系,其他信息是唯一的。,DTD元素声明具体应用, ,DTD元素声明具体应用,根元素必须首先声明 怎样引入外部DTD声明文档 最好使用结构化的方法编写DTD文档 主次关系,层次关系,从高层元素到低层元素定义,按元素的出现顺序,先出现的先定义 注意大小写和元素名的合法性,有关元素声明的几点注意,DTD属性声明,前面我们在DTD中描述了元素信息,同样可以在DTD中需要描述属性的信息 属性包括属性名与属性值 通常属性声明紧跟在元素类型声明之后,通过属性列表(atribute list)声明,包括如下几点: 属性标记 属性名称 属性值,DTD属性声明,DTD属性声明语法: 以上用来声明一个元素的多个属性,多个属性需使用空格分割,DTD属性声明,例如: 在该代码行中,将name属性与country元素相关联,指定它包含字符数据,以及它是隐含的,也就是说是可选的,DTD属性声明,ATTLIST关键字用来声明属性,它由四部分组成: 元素名称:属性所属的XML元素名 属性名称: 属性类型(属性值声明):可以限制属性值的类型,可以指定属性的详细信息 缺省值:属性的默认值 以上的关键在于属性类型和缺省值的取值,下面先看缺省值,DTD属性声明,属性的缺省值的分类: REQUIRED IMPLIED FIXED,DTD属性声明,REQUIRED:一般用来声明重要的参数,当元素的属性声明为该值后,则该元素在使用时就必须带着该参数,否则XML文档不能通过XML语法分析器的检验。 举例:3-04.xml 此时的文档不能通过有效性检查 注意:此时ID必须是字母开头,DTD属性声明,IMPLED:表示该属性是可有可无的,当把一个元素的属性定义为该属性类型的缺省值后,那么这个属性的值写也行不写也行。 举例: 3-05.xml 这个文档在解析时能通过检查。,DTD属性声明,FIXED:表示的含义用于只读的属性。一般属性的缺省类型定义为该类型后,用户不能更改此属性值。 如: 则以下不能通过有效性检查 例:attribute.xml,属性的数据类型可以由下表中的关键字指定(P56表3-2):,DTD属性声明,DTD属性类型,总体来说,XML有三种主要的属性类型: 字符串类型 记号化类型 枚举类型,DTD属性声明,字符串类型(CDATA): 文本数据的字符串,解析器不会进一步解析是否有元素,它就是单纯的文本数据,可以包含任何字符 最经常使用的属性类型 P57实例 tutorial.xml tutorial1.xml,DTD属性声明,枚举类型的使用: 定义枚举类型后,货币单位的属性值只能取所列值的一种,否则按出错处理,DTD属性声明,记号化类型 1)ID记号化类型 2) IDREF和IDREFS 3)ENTITY和ENTITIES 4)NMTOKEN和NMTOKENS,DTD属性声明,ID记号化类型的要求: ID属性必须是合法的名称:即遵循标识符的命名规则 每个元素不能拥有一个以上的ID类型属性,唯一性 一般和#REQUIRED合用 ID记号化类型格式: ID记号化类型例子 3-6.xml: 应用: 上海嘉禾 高级 书上示例:P58 tutorial3.xml,DTD属性声明,IDREF和IDREFS的要求: IDREF类型是用来引用同一文档中的ID属性类型的 IDREF类型的属性值必须指向一个对应的ID属性值 IDREF的格式: 书上示例:P58 tutorial4.xml(E-R图) 注意: 此项定义类似于数据库中的参照完整性 IMPLIED和REQUIRED的含义,DTD属性声明,IDREFS是引用多个IDREF类型,注意他的引入格式是: 注意:引用这些属性值要用空格分各开 书上示例:P59 tutorial5.xml,DTD属性声明,属性值列表的说明 如果需要限制属性值只能是其中几个,可以设定选择结构 格式如下: ,举例如下: 以上片段指定country元素的capital属性值可以是Glasgow、Santiago或Milan,默认值是字符串Glasgow,DTD属性声明,XML的默认属性说明: 属性xml:space用来处理空格符 属性xml:lang用来处理多种语系,DTD属性声明,属性xml:space用来处理空格符 此属性用来设定空白是否有意义,以便正确显示文件的空白 格式如下: preserve:保持原有空白格式 default:使用空白规范化方式处理空格符 以上指示在元素中所使用的空格处理方式,DTD属性声明,属性xml:lang用来设定文档内容使用的文字的语言信息 格式如下: 取值见P61表3-3 例如: 以上指示元素book使用的是台湾地区的繁体字,DTD属性声明,DTD实体声明,XML文档实质上是一个个实体组合 实体被声明后,就可在其它地方被引用 XML中实体分为通用实体和参数实体: 在XML文档中的实体是通用实体,它以结束 也可以使用范围分类:分为内部实体和外部实体,实体声明示例,内部实体示例: 外部实体示例: 参数实体示例: ,DTD实体声明,内部实体的声明: 内部实体: 文本内容在使用中要用双引号括起来,是一个可以解析的文本数据内容 举例: 使用: ,DTD实体声明,外部实体的声明: 外部实体: 如果实体所代表的内容不仅仅是一串字符,而表示的是一个外部文件,且是文本字符数据时使用 举例:,DTD实体声明,外部实体的声明: 外部实体: 如果实体所代表的内容是二进制文件时使用 举例: ,DTD实体声明,实体

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论