




已阅读5页,还剩89页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章使用DTD规范XML文档 3 1DTD基本概念 3 1 1DTD简介对XML文档所作的规范和约定被称为DTD 也就是文档类型定义 可以把DTD看作是编写某类XML文档的一个模板 3 1 1DTD简介 DTD用来描述XML文档的结构 一个DTD文档包含 元素 ELEMENT 的定义规则 元素之间的关系规则 属性 ATTLIST 的定义规则 可使用的实体 ENTITY 或符号 NOTATION 规则DTD以简单文本文件的形式出现 可以存储在独立的文件中 外部DTD 也可以嵌入XML文件 内部DTD DTD的作用 可以验证XML文档数据的有效性 可以为某类XML文档提供统一的格式和相同的结构 可以保证在一定范围内 XML文档数据的交流和共享 应用程序设计人员根据DTD就能够知道对应XML文档的逻辑结构 从而编写出相应的处理应用程序 3 1 2DTD的基本结构 一份DTD实际上是若干条有关元素 属性 实体等定义和声明语句的集合 在DTD中可以包含下列各种声明语句 DTD声明开始语句元素类型声明语句属性列表声明语句实体声明语句注释语句 DTD声明开始语句 根元素 元素类型声明语句 属性列表声明语句 实体声明语句 范例 DTDDemo 01 xml是一个包含内部DTD声明的完整XML文档 回顾1 3 2DTD对元素的声明 在有效的XML文档中所使用的元素 都必须在相应的DTD中明确地加以声明 包括声明元素的名称 元素内容的数据类型 该元素允许具有的子元素及子元素出现的顺序等 可以说 在DTD中对XML元素的声明决定了整个有效XML文档的逻辑结构 3 2 1元素声明的语法 语法 说明 ELEMENT 元素声明语句的开始 关键字ELEMENT必须大写 element name 所声明的元素名称 element definition 对该元素内容的定义 用来规定该元素可以包含的内容 注意 在一个DTD中对同名的元素只能声明一次 3 2 1元素声明的语法 例 范例 一个包含内部DTD的文档DTDDemo 02 xml 3 2 2各种元素的声明 1 基本字符元素的声明2 含子元素的严格声明3 包含任意内容的声明4 子元素出现次数的声明5 选择性子元素的声明6 空元素的声明7 混合型元素的声明8 实体的声明 1 基本字符元素的声明 XML文档中的基本字符元素 是指那些仅含有字符数据 而不含有任何子元素的元素 格式 例 对应的XML元素 元素的数据内容 2 含子元素的严格声明 子元素声明的格式 注意 经上述声明的元素不能直接包含字符元素 而只能包含所指定的这几个子元素 并且这些子元素在XML文档中必须以上面的排列顺序依次出现 每个子元素都必须出现一次 P54例 3 包含任意内容的声明 ANY内容声明表示该元素可以包含任意内容 如可解析的文本数据 空元素 子元素等 格式 ANY是一种更不严格的元素声明方式 它严重违背了DTD的设计初衷 因此向各位读者建议尽量避免使用这种声明方式 4 子元素出现次数的声明 表3 1控制子元素出现次数的特定符号 例 返回 选择性子元素指一个父元素必须在多个指定的子元素中选择其中的一个 格式如下 P55例 5 选择性子元素的声明 6 空元素的声明 格式 例 声明引用或 混合型元素内容的声明 就是指元素的内容中可以出现可解析的文本数据 也可以出现子元素 其格式如下 表示既允许包含字符数据 又允许以任意顺序包含指定的一个或多个子元素 也允许不包含任何元素内容 P56例 7 混合型元素的声明 回顾2 8 实体的声明 实体即有一定内容的一个常量 其格式如下 例 声明引用 均表示元素 作者 是字符型元素 3 2 3元素声明综合示例 1 灵活控制元素出现次数文档中特定元素出现的次数整个子元素内容出现的次数P57例2 元素的分组与嵌套将子元素用括号括起来作为一个元素组处理 P58两个例子 3 3DTD对属性的声明 任务 设定某个元素所具有的各个属性及其名称设定每个属性的数据类型设定该属性是必须有的还是可选的 是否具有固定的属性值 或者设定该属性值省略时的默认值属性名称和属性值包含在元素的起始标记中 3 3DTD对属性的声明 3 3 1属性声明的语法语法 3 3 1属性声明的语法 说明1 ATTLIST 表示属性定义语句的开始 ATTLIST是关键字 必须大写 Element Name 元素名 用来指定对该元素的属性进行声明 Attribute Name 该元素具有的某个属性名 属性的命名规则与元素的命名规则是一致的 Type 属性的数据类型 added declare 属性的附加声明 是一个可选项 说明2 一个元素可以定义多个属性 在一行中定义在多行中定义 3 3 2属性的附加声明 3 3 2属性的附加声明 1 REQUIRED表示在相应的XML文档中该元素的这个属性是必须的 并必须给出一个属性值 例 2 IMPLIED表示在XML文档中该元素的这个属性是可有可无的 例 手机手机 3 3 2属性的附加声明 3 FIXEDAttValue表示在XML文档中该元素的这个属性值是所给定的固定值 不能更改 例 4 Default Value在属性的附加声明中如果直接给定一个用引号括起来的字符串 表示预设的默认属性值 例 手机手机手机 3 3 3属性的各种类型 某个属性的类型 Type 规定了哪种类型的数据可以作为该属性的值 XML规范允许为元素的属性指定10种不同的类型 10种不同的属性类型 3 3 3属性的各种类型 1 CDATA类型不包含 的任意字符串 注 元素内容为字符串 PCDATA 2 ID类型每一个属性值必须是唯一的P63例 3 3 3属性的各种类型 3 IDREF类型引用文档中某个元素ID属性值P64例4 IDREFS类型引用文档中若干个元素的ID属性值P65例多个ID属性值之间要用空格分开 并放在一对引号之中 举例 3 3 3属性的各种类型 5 ENTITY类型实体类型属性通常为外部二进制数据文件名或不可解析的实体 如GIF JPEG MPEG MP3 AVI等 名称 例 在DTD中经常会声明一个名为IMAGE或PICTURE的元素 用来在XML文档中包含一个图形数据 该元素一般需要一个名为Source的ENTITY类型属性来指定图形数据的来源 引用 3 3 3属性的各种类型 6 ENTITIES类型ENTITIES类型属性的属性值可以包含数个以空格分开的未解析实体名称 并使用一对引号将它们括起来 引用 3 3 3属性的各种类型 7 NMTOKEN类型NMTOKEN类型属性的属性值实际上是一个有效的XML数据的名称代号 是一个由若干个字母 数字 小圆点 连字号或下划线组成的名称字符串 字符串中不得包含空格 字符串中允许出现冒号 但不能出现在第一个字符位置 字符串允许由数字字符开头 范例 王大可 判断下列DTD文档的对错 八阵图功盖三分国 名成八阵图 江流石不转 遗恨失吞吴 八阵图功盖三分国 名成八阵图 江流石不转 遗恨失吞吴 判断下列DTD文档的对错 八阵图功盖三分国 名成八阵图 江流石不转 遗恨失吞吴 NMTOKEN类型 NMTOKEN与CDATA的关系 NMTOKEN是CDATA的一个子集 其限制比CDATA类型多 它不能包括空格 回车符 换行符 制表符等符号 3 3 3属性的各种类型 8 NMTOKENS类型NMTOKENS类型属性的属性值可以包含数个以空格隔开的名称代号 并使用一对引号将它们括起来 引用王大可 判断下列DTD文档的对错 八阵图功盖三分国 名成八阵图 江流石不转 遗恨失吞吴 3 3 3属性的各种类型 9 NOTATION类型 标注类型 现实世界中存在很多无法或不易用XML格式组织的数据 如图像 语音 影像等 对于这些数据 XML应用程序常常并不提供直接的应用支持 NOTATION类型 标注类型 NOTATION类型属性的属性值注明了能对不可解析实体处理的应用软件 注意 在DTD中声明一个NOTATION类型的属性时 必须首先声明一个具体的NOTATION 用来指向应用软件所在的位置 P66范例 DTDDemo 03 xml 声明一个标注 声明一个属性为标注类型 引用 3 3 3属性的各种类型 10 Enumerated类型枚举类型属性必须从一组给定的值中选择一个作为其属性值 定义这种类型的属性时不需要专门的关键字 可选值 默认值 10种不同的属性类型 练一练 A 手机B 手机C 手机若声明 则有效的 影片 元素是 若声明 则有效的 影片 元素是 若声明 则有效的 影片 元素是 若声明 则有效的 影片 元素是 3 4DTD的引用 3 4 1引用内部DTD语法 DOCTYPE 表示DTD声明的开始 关键字DOCTYPE必须大写 根元素名称 指定XML文档的根元素名称 这个根元素名称必须精确地与文档中实际的根元素名称一致 DTD声明语句序列 包含在一对方括号 之内的若干条语句 用来对XML文档中所使用的元素 属性和实体等进行具体声明 3 4 1引用内部DTD 注意 在XML文档中引用内部DTD时 应该在文档开头的XML声明语句中添加standalone yes 的说明 范例 DTDDemo 04 xml 3 4 2引用外部DTD 1 外部DTD的创建外部DTD是一个独立于XML文档的文件 使用 dtd为其文件扩展名 此种文件实际上也是一个文本文件 可用任何文本编辑器创建 在外部DTD中 除了没有内部DTD中的 DOCTYPE根元素名称 语句之外 其他声明语句都是一样的 P69例 2 外部DTD的引用 根据外部DTD性质的不同 又可将其分为私有DTD文件和公共DTD文件 私有DTD文件是指并未公开的DTD文件 通常属于某个组织内部或个人所有 公共DTD文件则是为某一应用领域或行业所制定 被国际上的标准组织或行业组织广泛认可的 公开的 标准的DTD文件 3 4 2引用外部DTD 引用私有DTD文件的语法格式为 存放路径 绝对或者相对路径 引用公共DTD文件的语法格式为 逻辑名称存放路径 3 4 2引用外部DTD 注意 在XML文档中引用外部DTD时 应该在开头的XML声明语句中添加standalone no 说明 范例 DTDDemo 05 xml P70 DTD范例1 DTD 内部 外部 在XML文档的XML声明后直接写入 存在于文档内容之外 范例演示 内部文档类型定义 DTD范例2 范例演示 空中监狱尼古拉斯凯奇家长指引幽灵黛米摩尔帕特里克斯韦兹家长指引 外部文档类型定义 外部DTD文件 3 4 3混合引用DTD 混合引用DTD是指 在一个带有内部DTD的XML文档中 再引用一个或多个外部DTD来共同规范文档中的内容 范例 DTDDemo 06 xml可以改为一个内部DTD吗 DTDDemo 06 1 xml可以改为外部参数实体吗 DTDDemo 06 2 xml 3 5实体的声明与引用 3 5 1实体的概念与分类1 实体的概念实体 Entity 是一个预先定义的数据或数据集合 通过实体可以方便地被引用到任何需要这些数据的地方 另外 通过实体也可以将非XML数据 比如可以将图形和影像等二进制数据 引进到XML文档中 2 实体的分类 一般实体 用来替代文档具体内容的实体 参数实体 专门用在DTD中的实体 不能在XML文档中引用 内部实体 所定义的实体内容并不涉及外部文档 外部实体 所定义的实体内容为外部独立存在的文件 可解析实体 包含字符 数字 文本块或标记的实体 不可解析实体 包含图片 声音等其他二进制数据的实体 四种较常用的实体 内部一般实体外部一般实体内部参数实体外部参数实体 3 5 2内部一般实体 内部一般实体是指在DTD中定义的一段具体文字内容 通常在XML文档的元素中引用 也可在DTD语句中引用 语法 ENTITY 表示开始声明一个实体 关键字ENTITY必须大写 Entity Name 表示实体的名称 Entity Value 表示实体的具体内容 引用内部一般实体 在XML文档或者DTD中引用内部一般实体 范例 comEntity xml实体内容还可以包含标记或多行文档内容 当包含多行时 必须用 把这些内容括起来 另外实体内容必须有效 否则应用该实体的XML文档不能称为有效的XML文档 范例 Entity 01 xml 3 5 3外部一般实体 外部实体所对应的内容通常为一个独立存在的文件 在DTD中定义某个外部实体时需要指定该实体所对应文件的URL 在DTD中定义外部一般实体的语法 外部实体的关键字 3 5 3外部一般实体 说明 ENTITY 表示开始声明一个实体 关键字ENTITY必须大写 Entity Name 表示外部实体的名称 SYSTEM 是定义为外部实体的关键字 Entity URL 该实体所对应文件的URL 在XML文档中引用外部一般实体的语法 范例 Entity 02 xml 3 5 4内部参数实体 参数实体 是专门用在DTD中的一种实体 参数实体在DTD中定义和引用 使用参数实体不仅方便DTD的编写 也有利于DTD文件的维护 内部参数实体 是指在DTD中定义的一段具体内容 并只能在该DTD的其他声明语句中引用的已解析实体 声明内部参数实体的语法 说明 ENTITY 表示开始声明一个实体 关键字ENTITY必须大写 表示声明的是一个参数实体 Entity Name 表示内部参数实体的名称 Entity Value 表示实体的内容 在DTD中引用内部参数实体的语法 Entity Name P77范例 Entity 03 xml 有空格 无空格 3 5 5外部参数实体 外部参数实体 允许将较小规模的DTD组合来创建较大规模的DTD 即将一个独立的DTD文档定义为一个外部参数实体 并通过这个DTD文档的URL对其进行引用 声明外部参数实体的语法 3 5 5外部参数实体 说明 ENTITY 表示开始声明一个实体 关键字ENTITY必须大写 表示定义的是参数实体 Entity Name 表示实体的名称 SYSTEM 是定义为外部实体的关键字 Entity URL 外部实体文件的URL 在DTD中引用外部参数实体的语法 Entity Name P79范例 Entity 04 xml 小结 内部一般实体 声明 引用 3 6XMLSchema简介 XMLSchema又被称为XML模式或XML架构 它是继DTD后 用来规范和描述XML文档的第二代标准 XMLSchema可用来详细规定XML文档的数据模式及组织结构 声明了XML文档中允许的数据和结构规定了XML文档中可以包含哪些元素 这些元素又可以具有哪些子元素以及这些子元素出现的顺序及其次数等规定了XML文档中每个元素和属性的数据类型 3 6 1XMLSchema基本概念 XMLSchema XML模式或者XML架构 的两大类型 XML模式定义语言 XMLSchemaDefinitionLanguage 3 6 1XMLSchema基本概念 与DTD相比 XMLSchema具有下面几个明显的优势 XMLSchema使用XML语法 XMLSchema支持名称空间 XMLSchema支持多种数据类型 XMLSchema具有更为强大和灵活的定义能力 范例1 自定义复杂元素类型 3 6 2XMLSchema数据类型 1 内置原子型数据类型2 自定义简单数据类型3 自定义复杂数据类型 原子型数据类型 简单数据类型 SimpleType 简单数据类型用于声明只包含数据内容的元素 不包含子元素 不包含属性 只能是数字 字符串或文本数据 简单数据类型 SimpleType 语法格式 name属性 自定义的简单数据类型的名称 必须是一个有效的XML名称 restriction子元素 对数据类型添加限制 list子元素 定义列表数据类型 union子元素 定义联合数据类型 restriction自定义简单数据类型 语法格式 一个或多个元素指定新数据类型的限制 可以是基本数据类型 也可以是自定义的数据类型 定义数据类型的约束面 在无符号整型的基础上扩建的一个简单数据类型的Schema文档 声明元素 声明简单类型实例 123456 例1 给员工分配100000到999999之间的员工编号 例2 enumeration约束的使用 声明元素 声明简单类型 声明基于字符类型的约束 实例 sliver 声明自定义枚举型 包含了三个选项 gold sliver copper 只能在三个选项中出现其中一个 复杂数据类型 ComplexType 复杂数据类型可以包含子元素和属性 也可以包含字符数据内容 内容模型定义 复杂数据类型 sequence 指定元素下的子元素必须严格按声明指定的次序出现 实例 XML基础高怡新人民邮电出版社HTML王松平人民邮电出版社 复杂数据类型 choice 指定元素下的子元素只能出现其中之一 如果把choice的maxOccurs属性设置成 unbounded 会怎样 实例 XML基础 相当于 元素名 子元素1 子元素2 子元素n 子元素可以不按顺序反复出现 group 声明一个元素组 该元素组可供复杂数据类型的元素引用 提高代码的重用率 ref引用一个元素组 复杂数据类型 例 person xsd 在一个XMLSchema文档的开头 必须声明一个且只能声
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔市医疗机构药品集中招标采购药品购销合同2篇
- 辽宁省普通高中联考2025-2026学年高二上学期9月月考化学试卷
- 数据治理与合规性下的隐私保护机制-洞察及研究
- 远程医疗的可及性与社会不平等问题分析-洞察及研究
- 部队交通安全培训讲话稿课件
- 湖北省襄阳市第四中学2025-2026学年高三上学期9月周考二英语试题(含答案含听力原文无音频)
- 安徽省宿州市第十一中学2024-2025学年七年级上学期第一次月考英语试题(含笔试答案无听力音频及原文)
- 部门级安全培训模板课件
- 20xx文秘个人实习报告范文
- 高效能源管理系统-洞察及研究
- 《国际贸易实务》课件第1章
- 感恩教育主题班会-《心怀感恩温暖前行》 课件
- 六年级书法学习课件
- 人教版初中语文文言文大全(原文)
- 利用新媒体平台传播创意文化-新媒体传播创意文化
- 劳动合同(模版)4篇
- 人教版小学一年级上册道德与法治教案全册
- 部编版人教2019-2020小学四年级道德与法治上册全册教案教学设计(道法教学案)
- 第10课《往事依依》公开课一等奖创新教学设计-1
- 2024年新人教版数学七年级上册全册课件
- 吉利EV450车型电动汽车控制系统及检修
评论
0/150
提交评论