2.5.4. 根据限制定义类型
概述
XML 架构允许您通过限制 XML 架构简单类型的可能值来创建新类型。例如,您可以定义一个简单类型 SSN
,它是仅包含 9 个字符的字符串。通过限制简单类型来定义的新类型,可使用 simpleType
元素来定义。
按限制划分类型的定义需要三个操作:
-
新类型的名称通过
simpleType
元素的name
属性指定。 -
从中派生新类型的简单类型(称为 基础类型 )在 limits 元素中指定。
请参阅 “指定基础类型”一节。
-
规则(称为 facets )定义基础类型所施加的限制是作为
限制
元素的子项的子项。请参阅 “定义限制”一节。
指定基础类型
基础类型是受限制来定义新类型的类型。它通过 limit 元素 来指定
。限制
元素是 simpleType
元素的唯一子项,并且具有一个指定 基础
类型的属性(base)。基本类型可以是任何 XML 架构简单类型。
例如,通过限制 xsd:int
的值来定义新类型,您可以使用类似 例 2.14 “使用 int 作为基础类型” 中显示的定义。
例 2.14. 使用 int 作为基础类型
<simpleType name="restrictedInt"> <restriction base="xsd:int"> ... </restriction> </simpleType>
定义限制
定义对基本类型实施的限制的规则称为 facets。facets 是带有一条属性( value
)的元素,它定义了如何强制实施 facet。可用的难题及其 有效值
设置取决于基本类型。例如,xsd:string
支持六方面面,其中包括:
-
length
-
minLength
-
maxLength
-
pattern
-
whitespace
-
枚举
每个 facet 元素都是 限制
元素的子元素。
示例
例 2.15 “SSN 简单类型描述” 显示了一个简单类型 SSN
的示例,它代表了一个社交安全号。生成的 type 是 xxx-xx-xxxx
形式的字符串。<SSN>032-43-9876<SSN> 是此类型的元素的有效值,但 <SSN>032439876</SSN> 不可用。
例 2.15. SSN 简单类型描述
<simpleType name="SSN"> <restriction base="xsd:string"> <pattern value="\d{3}-\d{2}-\d{4}"/> </restriction> </simpleType>