转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
XMLSchema用法(2)         ★★★★

XMLSchema用法(2)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:682 更新时间:2009/4/23 11:18:07
     什么是类型?
  我已经说过了,XML Schema可以让你把XML文档中的元素声明为特定的类型,准许解析器检查文档的内容及其结构。XML Schem定义了两种主要的数据类型:预定义简单类型和复杂类型。这两种数据类型之间的主要区别是复杂类型可以象数据一样包含其他元素而简单类型则只能包含数据。简单类型给予了XML Schema低级类型检查能力,允许你把元素定义为图A中的任何类型之一。
  
  图A
  
  简单类型
   定义
  
  string
   字符串数据。
  
  boolean
   二元类型的True或者False。
  
  date
   历法日期,格式是CCYY-MM-DD。
  
  dateTime
   历法日期和时间。
  
  time
   24小时格式的时间可根据时区调节。
  
  decimal
   任意精度和位数的十进制数。
  
  integer
   整数
  
  float
   标准的32位浮点数。
  
  
  XML Schema预定义简单类型
  
  
  你也可以定义自己的简单类型。为了更深入地了解各种XML Schema数据类型,请参看W3C网站上的“XML Schema Part 2: DataTypes”。
  
  复杂类型由complexType元素定义,它通常至少拥有一个name属性,用在声明其他元素时索引类型,除非它位于某一元素之内(参见下一节)。所有的复杂类型都会包含一个内容定义类型,其主要功能是定义类型能包含的内容模式。某些可用的内容模式请见图B。
  
  图B
  
  复杂类型
   定义
  
  sequence
   在其定义范围之内的所有元素都必须按顺序出现,范围由minOccurs和 maxOccurs指定。
  
  choice
   其范围内有且只有一个元素必须出现。
  
  any
   定义的任何元素都必须出现。
  
  simpleContent
   这种复杂类型只包含了非嵌套元素。可以通过包含扩展元素的方式扩展先前定义的简单类型。
  
  complexContent
   这种复杂类型只能包含其他元素。可以通过包含扩展元素的方式扩展先前定义的复杂类型。
  
  attribute
   这种复杂类型只能包含命名属性。
  
  
  一些准许的XML Schema复杂类型
  
  我们示例schema中的第一个complexType元素定义了booktype类型,你能从文档注释元素中看出,该类型给目录中单一的书建模型。Booktype包含一个sequence元素,通过它告诉解析器这种复杂类型的元素必须按照同样准确的顺序包含出现在sequence标签内出现的所有元素。就booktype而言,元素author、title、genre、price和publish_date都必须出现在 booktype元素之内。
  
  Description又是怎么一回事呢?它出现在sequence元素内,有没有这个必要呢?当然没有。description元素有一个minOccurs属性,它定义了复杂类型中元素可以出现的最小次数。在这种情况下,minOccurs的值是零,因此description是一个可选的元素。
  
  author元素也是这样。它有一个maxOccurs属性,但却没有设值,意思是说author元素可以在sequence中出现无限次,显然,一本图书的作者至少有一个但却不一定只有一个。既没有minOccurs也没有maxOccurs属性的元素必须而且仅仅只能在sequence中出现一次,因此,booktype sequence中的所有其他元素都是必要的而且只能出现一次。
  
  在我们的示例catalog schema中定义的第二个同时也是最后一个复杂类型是catalogtype复杂类型。它也是包含一个以上的sequence,你可以从无界的maxOccurs属性看出这一点。
  
  深入解释
  看你的背景知识有多少了,本文用到的示例schema的结构对你来说要不本该如何要不只会叫你发昏,对book和catalog元素不采用正规复杂类型声明来定义catalog schema也是可能的,清单C就是这样。注意,清单C中的complexType元素嵌套在了element元素之内,catalog的sequence元素的子元素具有一个ref属性通过它告诉解析器它有一个引用指向先前定义的book元素。
  
  我曾经听到很多人这样问:“很好,如果是这样的话,那么你为什么要采用以上那些费工夫的办法呢?”很简单,我们绕来饶去只是为了说明XML Schema的重要一点:它是可扩展的。通过定义类型的方式你就可以在多个文档中重用它们,甚至还可以用不同的schema对其进行扩展,这就像你在开发应用程序的时候重用或者扩展抽象数据类型或对象是一个道理。
  
  
  工具
  
  到目前为止,你应该意识到XML Schema的语法并不简单。虽然可以用简单的文本编辑器手工创建schema,不过,这样做也许会叫你累得吐血。为了更好地利用它,你可以采用若干种XML工具,最近出现的一些工具甚至提供了创建XML Schema的图形界面。XML Spy和Cape Clear Studio都是具有XML Schema创建功能的全方位XML综合开发环境。dtd2xs是一种DTD-to-XML的Schema转换工具,它有两种形式:单独运行的应用程序和Java类。同DTD一样,标准的XML Schema定义非常多,你可以根据自己的需要在应用程序的开发中采用。
  
  
  结论
  XML Schema具有强制文档内容和结构的能力,它是XML世界中的一种不但重要而且强大的新标准。在这篇文章里,我仅仅浮光掠影地大致解释了其基本原理,但我希望这些阐述能给你打下一个继续前进的基础。接下来我们继续探讨DOM解析器。
  
    


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台