📅  最后修改于: 2023-12-03 15:35:48.003000             🧑  作者: Mango
XML Schema Definition (XSD) 是一种描述 XML 文档结构的语言。其中包括了简单类型和复合类型两种类型。
在 XSD 中,简单类型定义了 XML 实例文档中使用的基础数据类型。它们是用于描述元素或属性的值的类型,例如字符串、整数、布尔值等。相对于复合类型,简单类型更为基础,其定义不依赖于其他类型。
在 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 中,支持以下简单类型基础类型:
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 中,可以使用 <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 中,可以使用以下方式定义简单类型的默认值或固定值:
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 中,可以使用命名空间来区分不同类型。例如,以下定义了一个字符串类型 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 中,可以使用已定义的简单类型来作为其他类型的基础类型。例如,以下定义了一个字符串类型 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 数据约束的使用者有所帮助。