`
sqe_james
  • 浏览: 264376 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XML Schema(1)继

    博客分类:
  • XML
阅读更多

简单类型

 

在购买订单模式文档中,几个元素和属性被声明为简单类型,其中一些简单类型如 string decimalXML Schema 中内置的。而其他的一些则是源于( 如果使用对象技术的语言,就是继承) 内置的类型。举例来说,partNum 属性的类型称为SKU (Stock Keeping Unit) ,是源于string. 的。内置的简单类型和他们的后继版本都能够被用在所有的元素和属性声明中,下面的列表列举了所有的在XML Schema 中内置的简单类型及其相应的例子。

 

简单类型( 原子类型)

值示例

备注

string

Confirm this is electric

 

normalizedString

Confirm this is electric

参见 (3)

token

Confirm this is electric

参见 (4)

byte

-1, 126

参见 (2)

unsignedByte

0, 126

参见 (2)

base64Binary

GpM7

 

hexBinary

0FB7

 

integer

-126789, -1, 0, 1, 126789

参见 (2)

positiveInteger

1, 126789

参见 (2)

negativeInteger

-126789, -1

参见 (2)

nonNegativeInteger

0, 1, 126789

参见 (2)

nonPositiveInteger

-126789, -1, 0

参见 (2)

int

-1, 126789675

参见 (2)

unsignedInt

0, 1267896754

参见 (2)

long

-1, 12678967543233

参见 (2)

unsignedLong

0, 12678967543233

参见 (2)

short

-1, 12678

参见 (2)

unsignedShort

0, 12678

参见 (2)

decimal

-1.23, 0, 123.4, 1000.00

参见 (2)

float

-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN

等同于单精度32 位浮点数,其中”NaN ”表示”不是一个数字”。参见 (2)

double

-INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN

等同于双精度64 位浮点数。参见 (2)

boolean

true, false,1, 0

 

time

13:20:00.000, 13:20:00.000-05:00

参见 (2)

dateTime

1999-05-31T13:20:00.000-05:00

这个时间表示的含义是:1999531 日美东标准时间下午1:20 ,注意后面的-05:00 表示这个时间比格林尼治时间早5 个小时。参见 (2)

duration

P1Y2M3DT10H30M12.3S

这表示经过了12 个月3 天又10 个小时30 分钟12.3

date

1999-05-31

参见 (2)

gMonth

--05--

表示5 月。参见 (2) (5)

gYear

1999

表示1999 年。参见 (2) (5)

gYearMonth

1999-02

表示19992 月,而并不关心是几号。参见 (2) (5)

gDay

---31

表示31 号。参见 (2) (5)

gMonthDay

--05-31

表示每个531 号。参见 (2) (5)

Name

shipTo

XML 1.0 Name 类型

QName

po:USAddress

XML 命名空间的QName 类型

NCName

USAddress

XML 命名空间的NCName 类型,即一个不带命名空间前缀修饰的QName

anyURI

http://www.example.com/, http://www.example.com/doc.html#ID5

 

language

en-GB, en-US, fr

XML 1.0 中定义的合法语言代码

ID

 

XML 1.0 中定义的ID 属性类型。参见 (1)

IDREF

 

XML 1.0 中定义的IDREF 属性类型。参见 (1)

IDREFS

 

XML 1.0 中定义的IDREFS 属性类型。参见 (1)

ENTITY

 

XML 1.0 中定义的ENTITY 属性类型。参见 (1)

ENTITIES

 

XML 1.0 中定义的ENTITYS 属性类型。参见 (1)

NOTATION

 

XML 1.0 中定义的NOTATION 属性类型。参见 (1)

NMTOKEN

US, Brésil

XML 1.0 中定义的NMTOKEN 属性类型。参见 (1)

NMTOKENS

US UK, Brésil Canada Mexique

XML 1.0 中定义的NMTOKENS 属性类型,即一个使用空格作为元素分隔的NMTOKEN 列表。参见 (1)

注意:

   1. 为了在XML SchemaXML 1.0 DTD 之间保持兼容,简单类型IDIDREFIDREFSENTITYENTITIESNOTATIONNMTOKEN (表由一个或多个字母,数字,句点(.) ,连字号(-) 或底线(_) 所组成的一个名称,除第一个字符外,其属性设置值中也可以包含冒号(:) )、NMTOKENS 只能用在属性定义中;

   2. 这个类型的值能够表示为不止一种格式,如1001.0E2 都是有效的float 格式,它们都表示”一百”这个数值。然而,对于这个类型而言,已经为其定义了规范的格式规则。

   3. 换行符、制表符和回车符在normalizedString 中将会在处理前被转化成空格字符

   4. 作为normalizedString ,相邻的空格字符将会被合并为一个空格字符,第一个和最后的空格将被移走

   5. g ”前缀表示罗马历的时间和年代。

 

新的简单类型通过从现有的简单类型( 内置的简单类型以及源于内置简单类型的简单类型) 引出定义。特别的,我们通过重新约束一个现存的简单类型来引出一个新的简单类型。换句话说,新类型的合法值范围是现有类型的值范围的子集。我们使用 simpleType 元素来定义和命名新的简单类型,我们使用 restriction 元素来指出现有的基类型。并且用它来标识约束值范围的细节

 

假设我们希望建立一个新的整数类型称为myInteger ,他的值范围为1000099999 。我们的定义应当基于简单类型integer ,然后定义他的值范围为1000099999 。为了定义myInteger ,我们这样来约束integer 的范围:

使用基类型来定义新的简单类型

<xsd:simpleType name="myInteger">
  <xsd:restriction base="xsd:integer">
    <xsd:minInclusive value="10000"/>
    <xsd:maxInclusive value="99999"/>
  </xsd:restriction>
</xsd:simpleType>
 

上面的例子显示了一个由一个基本类型定义和两个值域区间方面描述的组合,通过这三个要素来对myInteger 实施了定义。

 

而先前的购买订单模式文档则包含了其他的更详细的定义简单类型的例子。一个叫SKU 的新简单类型( 见下清单) 是从( 通过约束) 简单类型string 引出的。此外,我们使用一个称为pattern 的描述以及pattern 的正则表达式值"\d{3}-[A-Z]{2}" 来约束SKU 的值。其中,该正则表达式值的语义为:3 个数字后面跟着一个连字号接着跟着两个大写的英文字母"

<xsd:simpleType name="SKU">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="\d{3}-[A-Z]{2}"/>
  </xsd:restriction>
</xsd:simpleType>

XML Schema 定义了15 种用于简单类型定义描述的词汇。在这些词汇中, enumeration 是特别有用的,他能够被用于约束除boolean 类型之外的几乎每一个简单类型。 enumeration 限制简单类型的值为一系列不同的枚举值。举例来说,我们可以使用enumeration 来定义一个新类型称为 USState( 参见下例)USState 是从string 引出的,同时它的值必须为美国州的缩写。

<xsd:simpleType name="USState">
  <xsd:restriction base="xsd:string">
    <xsd:enumeration value="AK"/>
    <xsd:enumeration value="AL"/>
    <xsd:enumeration value="AR"/>
    <!-- and so on ... -->
  </xsd:restriction>
</xsd:simpleType>
 

USState 将会在现在使用的state 元素声明中成为string 类型的一个非常好的替换品。通过使用这个替换品可以使state 元素具有合法值的校验能力。举例来说,billToshipTo 元素的子元素state ,将会被限制在AKALAR 等等中。注意到对于特定类型的列举值必须是唯一的。

 

列表类型(List Type)

 

除了在前面描述简单类型的那个表格中列出的原子类型( 这些原子类型可用于组合成绝大多数的其他类型,包括其他的简单类型和复合类型) 外,XML Schema 中在简单类型范畴中还有列表类型的概念。( 原子类型、列表类型以及组合类型,总称为简单类型 ) 。一个原子类型的值在XML Schema 中是不可分割的。举例来说,NMTOKENUS 是不可分割的,US 的任何部分,如字母S 本身都是没有意义的。与之相比较,列表类型则是由一组原子类型组成 ,因此它的每一个部分( 原子) 本身都是有意义的。举例来说NMTOKENS 是个列表类型。这个类型的元素将是NMTOKEN 的列表,不同的 NMTOKEN 值间使用空格分隔,如"US UK FR"XML Schema 有三个内置的列表类型,他们是NMTOKENSIDREFSENTITIES

 

除了使用内置的列表类型之外,你还可以通过引用现有的原子类型来建立新的列表类型( 你不可以使用现有的列表类型来建立新的列表类型。也不能使用复合类型来建立新的列表类型 ) 。举例来说,我们可以建立一个名为myInteger 的列表类型,并在实例文档中使用它( 参见下图) 。其中下例中的后半部分即为实例文档中与列表类型 listOfMyIntType 相一致的实例元素。

<!-- Schema Fragment -->
<xsd:simpleType name="listOfMyIntType">
  <xsd:list itemType="myInteger"/>
</xsd:simpleType>
<!-- Instance Fragment -->
<listOfMyInt>20003 15037 95977 95945</listOfMyInt>

 一些用于描述的参数能够被应用到列表类型的定义中,它们是:lengthminLengthmaxLengthenumeration 。举例来说,如果我们想定义一个列表,这个列表正好包含了六个美国的州名(SixUSStates) 。我们首先从USState 定义了一个新的列表类型,称为 USStateList ,然后我们通过限制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 的原子类型,在上例后半部分的实例文档中就是一个具体的应用例子。

 

此时,需要注意的是,可以从原子类型string 导出一个列表类型,然而,在一个string 中也许会带有空格,而空格在一个列表类型实例中是作为分隔符使用的。所以当在使用基类型为string 的列表类型时,应当格外小心 。举例来说,假设我们定义了一个length 取值为3 的列表类型,同时这个列表类型是基于类型string 。以下由三个元素组成的列表是合法的:"Asie Europe Afrique" ,而下面的由三个元素组成的列表则是不合法的:"Asie Europe Am érique Latine"

 

即使"Am érique Latine" 在列表外可以作为单独的一个字符串存在,但当它包含在列表中,在Am ériqueLatine 之间的空格使得第四个项被有效地生成了,因此后面的那个例子不符合只有三个项的列表类型定义。

 

联合类型(Union Type)

 

应用原子类型和列表类型,一个元素或者属性的值可以为一个或者多个原子类型( 列表类型) 的实例。与之相比较,如果应用联合类型,一个联合类型包含了多个原子类型或者列表类型,而应用了联合类型的元素或是属性的值可以是这些原子类型或列表类型中的一个类型的实例。为了显示这点,我们建立一个用于表示美国的州的,为两个字母缩写或者数字列表的联合类型。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>
 

当我们在定义一个联合类型时,元素unionmemberTypes 属性的值包含了联合类型中所有类型的列表 。现在,假定我们声明了一个zipUnion 类型的元素,称为zipszips 元素有效的实例可参见上例。

 

 

此外,对于联合类型而言,还有两个描述性质的参数patternenumeration 也可以应需要使用

 

 

分享到:
评论

相关推荐

    使用XML实现变电站中IED的自动识别和远程配置.pdf

    1. XML在变电站IED中的应用 XML作为一种轻量级的数据交换格式,在变电站自动化系统中,可以用作配置信息、状态信息及故障信息的描述语言。它能够清晰地表达各种数据之间的关系,便于智能设备读取和解析配置信息,...

    继电保护故障信息处理主站系统设计的核心问题.pdf

    1. 继电保护系统的自动化标准:IEC61850和IEC61970是两个重要的国际标准,分别用于电力系统自动化和控制。IEC61850关注变电站内部的信息交换和通信模型,而IEC61970则关注能量管理系统应用程序接口。两者都与继电...

    dom4j-1.6.1.rar(超全)

    在Java世界中,DOM4J是继Java内置的DOM API和JDOM之后的一个强大选择,它提供了更灵活、高效的XML操作接口。这个“dom4j-1.6.1.rar”压缩包包含了DOM4J库的完整版本,包括核心库文件`dom4j-1.6.1.jar`,以及可能的...

    基于信息融合的继电保护智能管控系统研究.pdf

    通过定义XML Schema,可以提取、分类和整合各种数据信息,进一步进行深度分析。 模型融合则是将来自不同传感器的数据统一处理,通过数据层融合处理基础感知数据,特征层融合提取特征信息,而决策层融合则是在前两层...

    dom4j包请下载

    - **XML Schema验证**:DOM4J可以对XML文档进行Schema验证,确保其符合预定的格式要求。 **6. 应用场景** DOM4J广泛应用于配置文件处理、Web服务、数据交换、XML数据库等领域。它的灵活性和高性能使其成为Java...

    dom4j-1.6.1.jar

    1. **XML解析**:DOM4J提供两种主要的解析方式:SAX(Simple API for XML)和DOM。SAX是一种事件驱动的解析器,适合处理大型XML文件,而DOM则构建整个XML文档的树形结构,适用于小型或中型文件。 2. **XPath支持**...

    web service 开发文档

    为了实现分布式应用程序的创建,Web Service平台需要遵循一系列的标准协议和技术,主要包括XML、XML Schema (XSD)、SOAP 和 WSDL。 #### 三、关键技术 ##### 1. XML 和 XSD XML (可扩展标记语言)是Web Service...

    IEC 61850之SCL定义文档

    1. **IED(Intelligent Electronic Device)**:智能电子设备是变电站自动化系统中的核心组件,如保护继电器、测控单元等,它们具有自我诊断、数据处理和通信能力。 2. **逻辑节点(Logical Node)**:逻辑节点是...

    《Web技术》课程2018年秋季期末考试复习资料.docx

    - **XML Schema**:XML Schema提供了一种更强大的方式来定义XML文档的结构和数据类型。 #### 四、JSP页面指令详解 - **page指令**: - **contentType**:用于指定JSP页面的字符编码以及响应的MIME类型。 - **...

    onvif wsdl xsd文件(更新至2013.10 v2.4.1)

    而XSD(XML Schema Definition)文件则定义了数据的结构和格式,确保数据传输的准确性和一致性。 1. `media.wsdl`:此文件定义了媒体服务,它允许设备提供实时视频流、音频流以及元数据。通过这个服务,用户可以...

    Mycat权威指南第一版

    - **schema.xml**:配置逻辑库、逻辑表、分片节点等信息。 - **server.xml**:配置Mycat运行的全局参数。 - **rule.xml**:配置分片规则和表规则。 - **user.xml**和**system.xml**:用于配置用户权限和系统参数...

    Mycat+MySQL主从复制读写分离验证安装手册

    - **schema.xml配置**:定义数据源的负载均衡策略。 - `Balance=1`:表示只从`readHost`读取数据。 - `Switchtype=1`:自动切换主从关系。 - **创建表并插入数据**:在主服务器(写节点)上执行创建表和插入数据...

    C#微软培训资料

    &lt;&lt;page 1&gt;&gt; page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft...

Global site tag (gtag.js) - Google Analytics