📜  XSD-简单类型(1)

📅  最后修改于: 2023-12-03 15:35:48.003000             🧑  作者: Mango

XSD 简单类型

XML Schema Definition (XSD) 是一种描述 XML 文档结构的语言。其中包括了简单类型和复合类型两种类型。

在 XSD 中,简单类型定义了 XML 实例文档中使用的基础数据类型。它们是用于描述元素或属性的值的类型,例如字符串、整数、布尔值等。相对于复合类型,简单类型更为基础,其定义不依赖于其他类型。

XSD 中的简单类型定义

在 XSD 中,简单类型可以通过以下方式定义:

<xs:simpleType name="mySimpleType">
  <xs:restriction base="xs:string">
    <xs:pattern value="[A-Za-z]{3}[0-9]{3}"/>
  </xs:restriction>
</xs:simpleType>

其中,<xs:simpleType> 元素定义了一个简单类型,name 属性指定了类型的名称。在 <xs:simpleType> 元素下,我们使用 <xs:restriction> 元素定义了类型的限制条件。base 属性指定了该类型的基础类型,例如 xs:string 表示该类型为字符串类型。<xs:pattern> 元素指定了该类型的模式,例如 [A-Za-z]{3}[0-9]{3} 表示该类型为以 3 个字母开头,后跟 3 个数字的字符串类型。

XSD 中的简单类型基础类型

在 XSD 中,支持以下简单类型基础类型:

  • xs:string:字符串类型
  • xs:boolean:布尔值类型
  • xs:decimal:十进制数类型
  • xs:float:单精度浮点数类型
  • xs:double:双精度浮点数类型
  • xs:dateTime:日期时间类型
  • xs:time:时间类型
  • xs:date:日期类型
  • xs:gDay:日期的日部分
  • xs:gMonth:日期的月部分
  • xs:gYear:日期的年部分
  • xs:gYearMonth:日期的年月部分
  • xs:gMonthDay:日期的月日部分
  • xs:duration:时间段类型
XSD 中的简单类型限制条件

在 XSD 中,可以使用 <xs:restriction> 元素定义简单类型的限制条件。常用的限制条件如下:

  • xs:minInclusive:最小值
  • xs:maxInclusive:最大值
  • xs:minExclusive:最小值(不包括)
  • xs:maxExclusive:最大值(不包括)
  • xs:length:字符串长度
  • xs:minLength:最小字符串长度
  • xs:maxLength:最大字符串长度
  • xs:whiteSpace:空格限制
  • xs:pattern:正则表达式限制

例如,以下定义了一个整型类型 myIntType,其取值范围在 0~100 之间:

<xs:simpleType name="myIntType">
  <xs:restriction base="xs:int">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="100"/>
  </xs:restriction>
</xs:simpleType>
XSD 中的简单类型默认值与固定值

在 XSD 中,可以使用以下方式定义简单类型的默认值或固定值:

  • xs:default:定义简单类型的默认值
  • xs:fixed:定义简单类型的固定值

例如,以下定义了一个字符串类型 myStringType,其默认值为 Hello World,固定值为 Hi World

<xs:simpleType name="myStringType">
  <xs:restriction base="xs:string">
    <xs:default value="Hello World"/>
    <xs:fixed value="Hi World"/>
  </xs:restriction>
</xs:simpleType>
XSD 中的简单类型命名空间

在 XSD 中,可以使用命名空间来区分不同类型。例如,以下定义了一个字符串类型 myNamespace:myStringType,其命名空间为 http://www.example.com/mynamespace

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:myNamespace="http://www.example.com/mynamespace">
  <xs:simpleType name="myNamespace:myStringType">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
XSD 中的简单类型引用

在 XSD 中,可以使用已定义的简单类型来作为其他类型的基础类型。例如,以下定义了一个字符串类型 myStringType,其基础类型为已定义的类型 myBaseStringType

<xs:simpleType name="myBaseStringType">
  <xs:restriction base="xs:string">
    <xs:maxLength value="100"/>
  </xs:restriction>
</xs:simpleType>

<xs:simpleType name="myStringType">
  <xs:restriction base="myBaseStringType">
    <xs:pattern value="[A-Za-z]+"/>
  </xs:restriction>
</xs:simpleType>
结论

XSD 的简单类型定义是实现 XML 数据类型约束的重要手段,通过对简单类型的限制条件、命名空间、引用等多种方式使用,可以优化 XML 数据的定义和解析过程。本文介绍了 XSD 简单类型的定义、常用基础类型、限制条件、命名空间、引用等概念,希望对 XML 数据约束的使用者有所帮助。