高品质文库网

首页 » 正文内容 » 第2章 XML DTD
第2章 XML DTD
收录时间:2022-11-25 23:00:18  浏览:0
第二章 DTD 课程目标 DTD简介DTD语法普通实体 参数实体根据XML文档编写DTD 体验项目 在上一章我们编写了关于学生信息的XML文档 但是该文档只是结构良好的XML文档 为了得到有效的XML文档 应当在该文档中加入DTD 定义 班级 元素下的 学生 子元素的个数 学生可同时拥有多个电子邮箱 每个学生有电话或手机 并定义了参数实体 部分参考代码如下 DTD简介 什么是DTD在信息的高速交流中 不同领域之间的信息交换越来越紧密 如何才能保证这些不同领域之间的信息可以更容易且更有效率地交换成为我们首要关注的问题 为了解决这个问题 就需要不同的领域来针对领域的特性制定共同的信息内容模型 contentmodel 然后再通过这个共同的内容模型来标识信息 而DTD就是一种内容模型 DTD 文档类型定义 可以定义合法的XML文档结构 它使用一系列合法元素来定义文档的结构 DTD分为内部DTD和外部DTD 所谓内部DTD是指该DTD在某个文档的内部 只被该文档使用 外部DTD是指该DTD不在文档内部 可以被其他所有的文档来共享 DTD文档与XML文档实例的关系可以看成是类和对象的关系 DTD的优势 每一个XML文档都可携带一个DTD 用来对该文档格式进行描述 测试该文档是否为有效的XML文档 既然DTD有外部和内部之分 当然就可以为某个***的团体定义一个公用的外部DTD 那么多个XML文档就都可以共享使用该DTD 使得数据交换更为有效 甚至在某些文档中还可以使内部DTD和外部DTD相结合 在应用程序中也可以用某个DTD来检测接收到的数据是否符合某个标准 对于XML文档而言 虽然DTD不是必须的 但它为文档的编制带来了方便 加强了文档标记内参数的一致性 使XML语法分析器能够确认文档 如果不使用DTD来对XML文档进行定义 那么XML语法分析器将无法对该文档进行确认 元素的定义 根元素的声明每个XML文档都只有一个根元素 其它的子元素都包含在该根元素中 因此在DTD中对根元素的声明是必不可少的 根元素声明的一般形式如下 DOCTYPE是 documenttype 文档类型 的简写 DOCTYPE声明必须放在文档最顶部 在所有代码和标识之上 DOCTYPE声明是必不可少的关键组成部分 DTD语法要求DOCTYPE必须要大写 而且DOCTYPE和元素之间必须要有空格隔开 如在以上代码中DOCTYPE和根元素root之间要有空格隔开 元素类型 子元素的定义格式如下 ELEMENT是关键字 后面跟元素名和元素类型 中间用空格分开 元素类型一般分为以下几种 EMPTY PCDATA ANY 关键字和符号的综合 只包含子元素 使用符号 其它非关键字类型 EMPTY和 PCDATA 属于EMPTY类型的元素没有字符串值 即该元素不包含任何内容 但可以有一个或多个属性 如下 havewife 元素的元素类型为EMPTY 所以该元素不能有字符数据 PCDATA表示该元素可以包含经过XML解析器解析过的文本数据 如下 张三 name 元素的元素类型为 PCDATA 那么该元素就可包含字符数据 ANY类型 ANY类型表示可以包含多个子元素且不受*** 也可包含字符串数据 但ANY一般用在对根元素的声明中 如下 张三zhangsan zhangsan 根元素 root 的类型为ANY 那么 root 中子元素的个数就不会受到*** 其它非关键字类型 只包含子元素将某个元素定义为只包含子元素 没有字符串数据 如下 使用符号一般可使用的符号分为以下几种 问号 表示该元素可以出现一次或不出现 加号 表示该元素可以出现一次或多次 星号 表示该元素可以出现一次 多次或不出现 或 表示两个元素中只出现一个 且必须出现一个 逗号 定义各元素间的顺序 属性的定义 属性定义的一般格式如下 ATTLIST是关键字 元素名是指该属性所属的元素的名称 属性名是该属性的标识 类型是表示该属性属于何种类型 属性特征是对该属性的约束 比如设置是否每个元素实例都必须有该属性等控制 如下 aaabbb product 是元素名 编号 是属性名 CDATA 是属性类型 IMPLIED 是属性的特征 属性的类型 属性的类型有以下十种 NMTOKENS属性类型 CDATA属性类型 NMTOKEN属性类型 IDREF属性类型 IDREFS属性类型 Enumerated 枚举型 属性类型 NOTATION属性类型 ENTITY属性类型 ENTITIES属性类型 Enumerated不是关键字 ID属性类型 CDATA属性类型 CDATA类型表示属性值可以是任意的字符 数字 符号等 如下 C语言 代号 属性被声明为CDATA类型 NMTOKEN和NMTOKENS NMTOKEN类型要求属性值中不能包含空格且必须以下划线 数字或字母开头 NMTOKENS类型与NMTOKEN类型类似 NMTOKENS类型要求属性值必须以下划线 数字或字母开头 但可以包含空格 C语言 ID属性类型 ID类型要求每个元素实例的属性值必须不同 如下 注意 加空格不能区分ID类型的属性值 C语言C IDREF和IDREFS 被声明为IDREF属性类型的属性值等于ID属性类型的属性值 如下 C语言Jude IDREFS属性类型与IDREF类似 该属性类型的属性值可为多个ID属性类型的属性值的字符串和 并加上空格分开 枚举型 列举出要选的项 与下拉列表类似 如下 lily 属性 学历 为枚举型 其值必须是高中 大学 研究生 博士中的一个 属性 性别 为枚举型 其值必须是男或女 ENTITY和ENTITIES ENTITY的属性值必须对应某个实体 ENTITIES与ENTITY类似 ENTITIES的属性值对应多个实体 并用空格分开 如下 测试1测试2 NOTATION属性类型 NOTATION类型属性的值为DTD中声明的注释名 如下 A001thisisatest jcreat为该DTD中声明的注释名 Play属性为NOTATION类型属性 属性的特征 属性的特征主要有以下几种 REQUIRED 表示该属性必须有 IMPLIED 表示该属性可以有也可以没有 FIXED 表示该属性的属性值固定 学历 的值必须是 大学 应聘职位 的值可以自己定义 性别 属性可有可无 实体的定义及其应用 在XML中有五种预定义实体例如下面的代码中 使用 表示对单引号的引用 是字符吗 内部实体的声明及其引用 内部实体声明的一般格式如下 其中ENTITY是关键字 city 是实体名 北京 是实体所代表的值 引用内部实体的一般格式如下 中国 其中 是对 city 这个实体的引用 狂人日记 声明内部实体authorname 并在文档中对其引用 外部实体的声明及其引用 外部实体声明的一般格式如下 其中 ENTITY 和 SYSTEM 都是关键字 book 是外部实体名 D xml dtd book dtd 是URL地址 外部实体的引用与内部实体的引用一样 如下 声明外部实体book 并在文档中对其引用 参数实体的定义及引用 参数实体声明的一般格式如下 参数实体的声明和一般实体的声明类似 只是在ENTITY关键字和实体名之间加入了一个百分号 参数实体的引用格式如下 book 其中 book 是对 book 这个参数实体的引用 外部参数实体 外部参数实体的声明和引用与外部实体类似 如下 book 声明外部参数实体book 并在文档中对其引用 注意 普通实体和参数实体都可以是多个 内部DTD和外部DTD的使用 DTD分为内部DTD和外部DTD所谓内部DTD是指该DTD在某个文档的内部 只被该文档使用 外部DTD是指该DTD不在文档内部 可以被其他所有的文档来共享 使用外部DTD使用外部DTD可以把DTD文件从XML文档中分离出来 在文档中对外部DTD的引用一般格式如下 或 其中 DOCTYPE 和 SYSTEM PUBLIC 为关键字 元素名 一般为根元素的名称 文件名 为该文档将要使用的外部DTD的文件名 DTD文件 person dtd 代码如下 XML文件代码如下 JudelyJudely Judely 13845836260HeanlyHeanly 02545430 外部DTD 引用外部DTD DTD实例 根据需求写DTD 需求 根元素为 workers 其中有多个工作者 worker 每个工作者都有属性 id 用来唯一标识自己 经验 属性可有可无 但只能取 有经验 和 没有经验 两种值 工作者包括姓名 性别 职位 工资等信息 如果职位是 经理 要显示他手下有多少员工 反之 则不显示 DTD文件代码如下 根据XML文档编写DTD 老李50Lily49大明漂亮Lucy小小明小明 需要DTD约束的XML文档 编写的DTD如下 该DTD属于内部DTD 须放在该文档的文档声明之后 根元素声明之前 DTD的*** 利用DTD验证有效性的解析器 就能够立即对文档的完整性进行可靠的检查 DTD虽然比较实用 但DTD也有不少的*** 如下 DTD的结构化不够完善 不利于重用 DTD本身并不是XML文档 DTD是基于正则表达式
温馨提示:
1. 高品质文库网仅展示《第2章 XML DTD》的部分公开内容,版权归原著者或相关公司所有。
2. 文档内容来源于互联网免费公开的渠道,若文档所含内容侵犯了您的版权或隐私,请通知我们立即删除。
3. 当前页面地址:https://www.gpinxiao.vip/doc/5ea9049d3b364f0c.html 复制内容请保留相关链接。