XML Schema帮你建模(4)

原创 2004年11月03日 17:12:00
除了使用简单类型中描述的原子类型(这些原子类型可用于组合成绝大多数的其它类型,包括其它的简单类型和复合类型)外,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也可以应需要使用。

XML Schema帮你建模(一)

XML Schema帮你建模(1)作者: 柴晓路   www.ASPCool.com      XML Schema是2001年5月正式发布的W3C(万维网联盟)的推荐标准,经过数年的大规模讨论和开发...
  • outiejun
  • outiejun
  • 2004年11月30日 17:34
  • 332

XML Schema帮你建模(3)

我们现在已经讨论了如何定义新的复合类型(比如PurchaseOrderType)、声明元素(比如purchaseOrder)和声明属性(如orderDate)。在这些定义行为中,一般都包含着命名,如果...
  • naive1010
  • naive1010
  • 2004年11月03日 17:06
  • 778

Web服务建模(一):XML模式

        这篇文章是探讨 UML 建模(特别是使用IBM Rational Software Architect)在标准化 Web 服务的细节设计模型方面的使用的系列的第一部分,该系列共有三个部...
  • hdy007
  • hdy007
  • 2007年02月05日 16:54
  • 1070

实体数据模型的XML文件

xml version="1.0" encoding="utf-8"?> edmx:Edmx Version="2.0" xmlns:edmx="http://schemas.microsoft.co...
  • ydm19891101
  • ydm19891101
  • 2014年12月10日 16:57
  • 1166

XML Schema 及其文件.xsd

XML Schema完全解说:本文讲述了XML Schema 是什么,为什么需要XML Schema ,以及举例说明怎么为一个XML文档准备XML Schema。 XML Schema 是用来定义X...
  • qq_33530388
  • qq_33530388
  • 2017年04月23日 17:02
  • 281

schema设计

schema设计 Schema设计   Schema:表的模式;   设计数据的表,索引,以及表和表的关系 在数据建模的基础上将关系模型转为数据库表满足业务模型需要基础上根...
  • u013898698
  • u013898698
  • 2017年03月15日 10:58
  • 162

XML Schema帮你建模

XML Schema帮你建模     XML Schema是2001年5月正式发布的W3C(万维网联盟)的推荐标准,经过数年的大规模讨论和开发如今终于奠定下来,成为全球公认的XML环境下首选的数据建模...
  • Tisten
  • Tisten
  • 2005年03月02日 23:56
  • 895

XML Schema帮你建模(1)

XML Schema是2001年5月正式发布的W3C(万维网联盟)的推荐标准,经过数年的大规模讨论和开发如今终于奠定下来,成为全球公认的XML环境下首选的数据建模工具。      由于XML是SGML...
  • naive1010
  • naive1010
  • 2004年11月03日 16:55
  • 827

.NET Framework 工具 XML 架构定义工具 (Xsd.exe)

.NET Framework 工具   XML 架构定义工具 (Xsd.exe)XML 架构定义工具从 XDR、XML 和 XSD 文件或者从运行库程序集中的类生成 XML 架构或公共语言运行库类。x...
  • GEORGEAJ
  • GEORGEAJ
  • 2004年10月17日 15:18
  • 2049

schema

Schema(模式):其作用与dtd一样,也是用于验证XML文档的有效性,只不过它提供了比dtd更强大的功能和更细粒度的数据类型,另外Schema还可以自定义数据类型。此外,Schema也是一个XML...
  • yjsuge
  • yjsuge
  • 2011年05月27日 22:03
  • 1920
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XML Schema帮你建模(4)
举报原因:
原因补充:

(最多只允许输入30个字)