数据的组织方式1:XML.ppt_第1页
数据的组织方式1:XML.ppt_第2页
数据的组织方式1:XML.ppt_第3页
数据的组织方式1:XML.ppt_第4页
数据的组织方式1:XML.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第十章数据的组织方式 XML 主要内容 概述 语法命名空间 XMLSchemaXMLDOM强大的检索工具 XPath格式化XML工具 XSL在客户端格式化XML跨浏览器的XML开发框架 zXML应用实例 Ajax文章列表程序 XML 重点 难点 全部 10 1XML概述XML是ExtensibleMarkupLanguage的简称 即可扩展标记语言 XML是从SGML和HTML发展而来的 XML有很多的优点 由于HTML语言的标签是固定不变的 注意就限制了他的发展 同时也带来了很多不便 由此就产生了可扩展标记语言XML 它能够实现扩展 解决了HTML的不足 XML有以下特点 XML是一种元标记语言 开发者可随意定义自己需要的标记 XML是一种语义 结构化语言 它描述了文档的结构和语义 XML是一种通用的数据格式 其表示的数据是独立于任何平台 任何语言的 它提供了一种规范 利用这种规范 任意平台上的任意应用程序之间都可以进行通信 下面是xml的示例代码 第十章数据的组织方式 XML 10 1XML概述Ajaxtony2010 10 10helloboyAjaxtony2010 10 10helloboy 第十章数据的组织方式 XML 10 2XML语法规范XML是一种元标记语言 它允许开发者使用自定义标签 给开发者提供了极大的自由发挥空间 但是XML本身却有着非常严格的语法规范 开发者必须熟悉这些规范 才能正确使用XML 下面我们来了解下它的语法规范 XML声明 声明了该xml的版本 以及它的编码格式 根节点 xml文档中有且只有一个根节点 然后根节点下面可以有任意个子孙节点 第十章数据的组织方式 XML 10 2XML语法规范开始标签和结束标签 Ajaxtony用开始和结束来包含其下面的子节点 当该节点没有子节点的时候我们也可以省去结束标签 这样写也是可以的 但是该元素没有子节点了 第十章数据的组织方式 XML 10 2XML语法规范属性 节点是可以包含它的属性的 例如上面的level就是note节点的属性 合理的嵌套包含不允许元素之间交叉包含 例如下面的代码是错误的 Ajaxtony这样写才是正确的 Ajaxtony 第十章数据的组织方式 XML 10 2XML语法规范大小写敏感 上面的两个标签不等同 由于XML大小写敏感 XML将认为这些是两个标签 空白被保留 Xml Helloworld 结果 Helloworld HTML Helloworld 结果 Helloworld 如果html里面写了多个空格 那么空格只会保留一个 而xml中会保存所有的空格 第十章数据的组织方式 XML 10 2XML语法规范XML的注释 Xml的注释语言使用两个标记来扩住 元素的命名 Xml元素的命名也是要遵循一定的规范的 就象变量的命名一样 都有一个命名规范 元素名称可以包含字母 数字和其他字符 但是不能以数字或者标点符号开头 不能以xml 包括大小和大小写组合都不行 开头元素的名称不能包含空格 第十章数据的组织方式 XML 10 2XML语法规范元素的命名 下面的命名是错误的 下面的命名是正确的 第十章数据的组织方式 XML 10 2XML语法规范转移字符 在xml中 两个字符 解析是无法识别的 所以如果在字符窜中出现这两个字符 我们就需要使用转移字符来代替 下面是转移字符对应表 一般情况下 的转移字符最为常用 第十章数据的组织方式 XML 10 2XML语法规范CDATA部件 当某个节点内包含大量的需要转义的字符时 我们可以使用CDATA部件来包含这些需要转义的字符 例如 b alert b else alert a 第十章数据的组织方式 XML 10 3XML命名空间在XML中有可能出现同样的标签 来代表不同的意义 例如 上面的两段xml代码 第一个用来表示包里面放的有什么东西 第二个用来表示包的相关属性 有时候我们确实需要这样去定义 但是在xml中这样处理是错误的 为了解决这样的问题 我们就需要用到命名空间 第十章数据的组织方式 XML 10 3XML命名空间定义如下 示例代码 C和p表示的就是命名空间 xmlns就是用来定义这个命名空间的 第十章数据的组织方式 XML 10 3XML命名空间当然 你在定义这些命名空间的时候 不要起同样的名字 c和p不一样 而且命名空间指向的url地址也不能一样 第十章数据的组织方式 XML 10 3XML命名空间我们也可以为一个标签起两个命名空间 这样做也是可以的 但是不常用 作为了解 还有一种是默认的命名空间 我们留意下新建的一个html页面的代码 你就明白了 第十章数据的组织方式 XML 10 4XMLSchemaXMLSchema到底是什么 假设我们现在正在做一个网页 页面上要求用户输入产品的编号和价格 试想下 如果用户输入价格时 输入的是汉字 那么我们怎么能把一个汉字转化成数字呢 所以 我们就需要用验证的方式 去提示用户 不能输入数字以外的字符 同样的道理 如果我们用xml保存一个产品的价格 例如 80 88那么 如果这里存放的80 88被写成一串汉字 就非常危险了 在我们处理xml数据的时候 会给我们带来很多麻烦 所以 在xml中我们也需要一种约束来规范数据的格式 那么这种约束就是 XMLSchema 第十章数据的组织方式 XML 10 4XMLSchema基本示例 注意 Schema本身也是一个xml文档 第十章数据的组织方式 XML 10 4XMLSchema系统需要对输出的XML文档进行以下约束 根元素Notes下包含0个或者多个note子元素Note元素有一个可选熟悉postDate 其为日期类型 如果没有提供 则默认日期为 2007 11 17Note元素的第一个子元素必须为title title元素不包含任何属性和子元素 其值必须是字符串类型 表示标题 Note元素的第二个子元素必须为summary元素 summary元素不包含任何属性和子元素 其值必须是字符串类型 表示简介 Note元素的第二个子元素必须为comment元素 comment元素不包含任何属性和子元素 其值必须是字符串类型 xx Note元素的下一个元素为comment元素 为可选项 但是出现次数不能超过一次 comment元素不包含任何属性和子元素 其值必须是字符串类型 表示评论 在comment元素后 必须有一个或多个author元素 表示作者 第十章数据的组织方式 XML 10 4XMLSchema系统需要对输出的XML文档进行以下约束 Author元素必须有一个表示作者姓名的name子元素 其值为字符串 另外还可以有两个可选的子元素 表示作者性别sex和年龄age 如果出现sex元素 则只能从male和female中选择一个取值 如果出现age元素 取值范围 20 80 包含两边 name sex age三个元素顺序不限 注意 作者可以有多个 也就是author元素可以写无数个 可以有一个tags属性 表示标签名称 Author之后 如果有tags元素 就是tags元素之后 有一个表示文章点击量的hit元素 该元素为可选 最多出现一次 取值范围 0 默认为0 hit元素之后 必须有一个表示文章地址的url元素 其值为字符串 但必须以 第十章数据的组织方式 XML 10 4XMLSchema我们就需要建立一个Schema 以下为示例 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 下面 我们来尝试着去完成上面题目的要求 1 根元素Notes下包含0个或者多个note子元素要想完成这个要求 我们必须得先了解 在Schema中 定义元素是如定义的 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 定义元素 xs 命名空间element定义标签为元素name元素名称type元素类型 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 定义元素 我们必须要给元素名称 这个没问题 我们需要的元素名称是 nodes我们必须要给元素类型 现在又遇到了难题 怎么定义元素的类型呢 思考下 我们曾经所学过的一些数据类型 Int string date等等 那么 在Schema中是否也存在这些类型呢 下面 我们来了解下Schema中的元素类型如何定义 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 内置类型 和我们想象的一样 Schema为我们提供了丰富的数据类型 由于这些类型比较多 这里我们就不一一列举出来了 常用的内容类型 如课本276页 String 字符串 int 数字这里就不一一列出 详见课本 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 好了 既然知道了内置数据类型 那我们现在可以定义了notes元素了吧 现在问一个问题 Notes元素是什么类型的 我们查看xml代码发现 notes不是某一个我们已知的类型 它下面有子元素 子元素下面可能还有子元素 并不是一个单一的节点 里面包含字符或者是数字 那么 notes元素到底应该是什么类型呢 Schema为我们提供了符合数据类型 来定义这些有子元素的节点的复杂元素下面 我们来了解下什么是复合类型 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 复合类型 使用以上代码 我们可以定义一个符合类型 类型名称是notes 好了 既然复合类型已经定义完成 下面我们就来试试代码吧 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 写好了代码 我们需要测试下是否书写规范 那么怎么测试呢 下面 我们要了解下 如何让xml和Schema一一对应 例如 我们建立了一个Schema 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 上面的代码 就是我们已经建立好的Schema 注意xs schema元素里面有很多属性 我们只需要注意一个属性 targetNamespace 它的值是 http tempuri org XMLSchema Artical xsd 把这段代码复制下 然后在xml文档中的note添加如下属性 最重要的是xsi schemaLocation属性 要和targetNamespace属性保持一致 注意xsi schemaLocation属性的后半部分是一个文件名XMLSchema Artical xsd 而该文件就是我们创建的Schema文件的文件名 特别注意 在这个文件名的前面一定要有空格和前面的代码分隔开 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 好了 现在我们已经把xml和Schema关联起来 可以开始测试了 当我们打开xml文件的时候 我们留意到这里 如下图 出现一个波浪的情况 原因是我们的xml并不符合规范 鼠标移动到波浪显示字样 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 现在出现的问题是 我们的notes元素中必须有内容 或者是子元素 下面我们要完成的任务是 给notes元素下 添加几个子元素 而我们题目上也要求根元素Notes下包含0个或者多个note子元素下面我们来了解下 如何实现在复合类型中要求该类型的子元素的实现 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 我们已经发现 使用 可以定义在复合类型中 可以有子元素Sequence从该单词的中文解释 我们可以猜测到 该标签是可以限制我们子元素出现的顺序的 例如 这段代码 就要求 我们的xml文档中note和note1两个元素的顺序不能颠倒 当然 我们也可以不要求顺序 All标签表示 包含制定的元素 但是不要求顺序 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 好了 现在再去看看xml文档会不会提示错误了 错误已经消失 但是我们也留意到在Schema中却出现了错误 前面我们已经学习了如何定义元素 但是我们并不知道如何限制元素的数量这里 我们看到minOccurs和maxOccurs两个属性 一个用来限制最小值 一个用来限制最大值 0表示最小可以没有 unbounded表示最大没有边界 这两个并没有错误 出错的是note元素的类型 我们仔细看下xml文档 发现Note元素也是一个符合类型的数据 所以 下面我们需要定义note这个复合类型 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 根据题目要求 我们知道 note元素中要有制定的一些元素 而且元素顺序最好按照样本xml来定义 所以我们这样定义note元素的类型 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 好 剩下的继续 有问题 AuthorType是一个新的类型 为什么需要这个新的类型呢 再来看看题目 Author元素必须有一个表示作者姓名的name子元素 其值为字符串 另外还可以有两个可选的子元素 表示作者性别sex和年龄age 如果出现sex元素 则只能从male和female中选择一个取值 如果出现age元素 取值范围 20 80 包含两边 name sex age三个元素顺序不限 注意 作者可以有多个 也就是author元素可以写无数个 可见 作者这个元素的要求还是蛮高的 下面 我们就来看看AuthorType 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 从题目上我们得知 Author元素也必须有一个或多个子元素 可见它也是一个复合类型的元素 所以我们用复合来定义AuthorType 而这里面的元素并不要求顺序 所以我们用all标签 这里面的元素 sex和age都是有问题的 应该他们都是使用了新的类型 SexType和AgeType 看来我们需要再来了解下这两个新类型 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 先来分析下题目要求 如果出现sex元素 则只能从male和female中选择一个取值 要求上并没有提出sex元素必须有子元素 那么我们这个时候就不能再使用复合类型来定义sex元素的类型了 我们需要用简单类型来定义sex元素了 使用xs simpleType标签来定义一个简单类型 该类型可以用来定义某一个元素内容的类型 已经其他约束 例如 上面的代码 使用xs restriction标签 定义SexType类型的基类型是字符串 而且取值范围只能是male或者female xs enumeration标签标示枚举 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 先来分析下题目要求 如果出现age元素 取值范围 20 80 包含两边 其他的代码都和上面的一样 只有xs maxInclusive和xs minInclusive不一样他们分别表示 最大取值和最小取值 当然 AgeType的基类是integer数字我们才能这样定义 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 到此 作者元素已经分析完毕 下面是tags元素了Tags元素可以看出 是表示文章搜索标签的含义 当然这些标签是一组字符它们用空格隔开 表示不同的搜索关键字 那么 这个元素的类型又是一个新的类型 TagsType 该类型定义如下 其他不难理解 xs list表示一个列表标签 制定该类型中有多个内容 就好似一个列表 Token也是一个内置的类型 在课本上有解释 它的数据格式如下AjaxxmlJavaScript 简单的说就是用空格隔开的字符串 正好和我们要求的符合 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 写完了需要的代码后 我们再来测试下 我们发现程序提示tags元素的类型不对 其实我们上面定义的类型是TagType 而不是tags要求的类型TagsType为什么我们要这样做呢 因为 tags元素的要求不只如此 我们把代码写完整上面的代码很像程序中的方法重载 TagType被重载为TagsType类型 并且要求了该类型的列表元素的个数最小0 最大10 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 为了测试tags元素类型的功能 我们修改最大长度为1 如何修改xml文档中的Tags元素的内容元素个数为两个 出现如下错误 可见 我们对tags元素的限制起到了效果 Tags元素的设定到此结束 接着下面的元素 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 Hit元素 用来表示文章的点击率 题目要求 267可以看出 hit要有一个date属性 而且其值应是一个非负数的整数 所以 我们为该元素定义了一个新的类型HitType 这里可能不是很容易理解 首先我们认为hit是一个复合类型 它要求有自己的属性和内容 前面我们只是认为有子元素的就是复合类型 这里我们了解到有属性的也应该是复合类型 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 那么怎么定义属性 在HitType这个复合类型中 定义一个子元素xs attribute 表示该类型下包含属性的要求 属性名称为date 类型是date内置类型 use表示什么意思呢 Required optional prohibited三个值是它的取值范围分别表示 必须出现 可以出现 不能出现 这里 我们设置的是必须出现 xs simpleContent标签又是什么意思呢 有些元素既像复合类型 又像简单类型 例如hit元素 既有属性 又有内容 所以我们就需要一个基于简单类型的复合类型 使用xs complexType的子元素xs simpleContent 就可以实现上面的要求 第十章数据的组织方式 XML 10 4XMLSchemaSchema语法分析 xs simpleContent有一个子元素 extension 通过设置该元素的base属性 就可以设置xs simpleContent元素的值类型 例如上面 我们设置为xs nonNegat

温馨提示

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

评论

0/150

提交评论