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

XMLSchema帮你建模(4)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:629 更新时间:2009/4/23 11:18:12
     列表类型
  
  
  除了使用简单类型中描述的原子类型(这些原子类型可用于组合成绝大多数的其它类型,包括其它的简单类型和复合类型)外,XML Schema中在简单类型范畴中还有列表类型(List Type)的概念。原子类型、列表类型以及联合类型,总称为简单类型。一个原子类型的值在XML Schema中是不可分割的。举例来说,NMTOKEN值US是不可分割的,US的任何部分,如字母S本身都是没有意义的。与之相比较,列表类型则是由一组原子类型组成,因此它的每一个部分(原子)本身都是有意义的。举例来说NMTOKENS是个列表类型。这个类型的元素将是NMTOKEN的列表,不同的NMTOKEN值间使用空格分隔,如“US UK FR”。XML Schema有三个内置的列表类型,它们是NMTOKENS、IDREFS和ENTITIES。
  
  除了使用内置的列表类型之外,还可以通过引用现有的原子类型建立新的列表类型(不可以使用现有的列表类型来建立新的列表类型,也不能使用复合类型来建立新的列表类型)。举例来说,我们可以建立一个名为myInteger的列表类型,并在实例文档中使用它(参见代码10)。其中代码10中的后半部分即为实例文档中与列表类型listOfMyIntType相一致的实例元素。
  
  <!--代码 0-10 myInteger列表类型的模式定义以及实例应用-->
  <!-- Schema Fragment -->
  <xsd:simpleType name="listOfMyIntType">
  <xsd:list itemType="myInteger"/>
  </xsd:simpleType>
  <!-- Instance Fragment -->
  <listOfMyInt>20003 15037 95977 95945</listOfMyInt>
  
  
  
  一些用于描述的参数能够被应用到列表类型的定义中,它们是length、minLength、maxLength和enumeration。举例来说,如果我们想定义一个列表,这个列表正好包含了六个美国的州名(SixUSStates)。首先从USState定义一个新的列表类型,称为USStateList,然后通过限制USStateList只有六个项来导出SixUSStates。具体的定义可参见代码11。
  
  <!--代码11 列表类型USStateList及其导出的列表类型SixUSStates-->
  <!-- Schema Fragment -->
  <xsd:simpleType name="USStateList">
  <xsd:list itemType="USState"/>
  </xsd:simpleType>
  <xsd:simpleType name="SixUSStates">
  <xsd:restriction base="USStateList">
  <xsd:length value="6"/>
  </xsd:restriction>
  </xsd:simpleType>
  <!-- Instance Fragment -->
  <sixStates>PA NY CA NY LA AK</sixStates>
  
  
  
  类型为SixUSStates的元素必须有六个项,它们中的每一个项必须是一个枚举类型USState的原子类型,在代码11后半部分的实例文档中就是一个具体的应用例子。
  
  我们需要注意的是,从原子类型string可以导出一个列表类型,然而,在一个string中也许会带有空格,而空格在一个列表类型实例中是作为分隔符使用的。所以当在使用基类型为string的列表类型时,应当格外小心。举例来说,假设我们定义了一个length取值为3的列表类型,同时这个列表类型是基于类型string。下面由三个元素组成的列表是合法的:“Asie Europe Afrique”;而由三个元素这样组成的列表是不合法的:“Asie Europe Amérique Latine”。即使“Amérique Latine”在列表外可以作为单独的一个字符串存在,但当它包含在列表中,在Amérique和Latine之间的空格使得第四个项被有效地生成了,因此后面的那个例子不符合只有三个项的列表类型定义。
  
  
  联合类型
  
  
  应用原子类型和列表类型,一个元素或者属性的值可以为一个或者多个原子类型(列表类型)的实例。与之相比较,一个应用联合类型(Union Type)包含了多个原子类型或者列表类型,而应用了联合类型的元素或是属性的值可以是这些原子类型或列表类型中的一个类型实例。为了显示这一点,我们建立一个用于表示美国州的、为两个字母缩写或者数字列表的联合类型。zipUnion联合类型由一个原子类型和一个列表类型构成的(参见代码12)。
  
  <!--代码 12 联合类型zipUnion及其实例-->
  <!-- Schema Fragment -->
  <xsd:simpleType name="zipUnion">
  <xsd:union memberTypes="USState listOfMyIntType"/>
  </xsd:simpleType>
  <!-- Instance Fragment -->
  <zips>CA</zips>
  <zips>95630 95977 95945</zips>
  <zips>AK</zips>
  
  
  
  当我们在定义一个联合类型时,元素union的memberTypes属性的值包含了联合类型中所有类型的列表。现在,假定我们声明了一个zipUnion类型的元素,称为zips,zips元素有效的实例可参见代码12。
  
  此外,对于联合类型而言,还有两个描述性质的参数pattern和enumeration也可以应需要使用。
    


[Web开发]XMLSchema帮你建模(3)  [Web开发]XMLSchema帮你建模(1)
[Web开发]XMLSchema帮你建模(2)  
教程录入: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……
    咸宁网络警察报警平台