2.5.4. 根据限制定义类型
概述 复制链接链接已复制到粘贴板!
XML Schema 允许您通过限制 XML Schema 简单类型可能的值来创建新类型。例如,您可以定义一个简单的类型 SSN,字符串为正好 9 个字符。通过限制使用 simpleType 元素来定义简单类型的新类型。
按限制划分的定义需要三个因素:
-
新类型的名称由
simpleType元素的name属性指定。 -
新类型派生自的简单类型(称为 基本类型 )是在 limit 元素中指定。
请参阅 “指定基本类型”一节。 -
名为 facets 的规则,定义基本类型的限制被定义为
限制元素的子项。请参阅 “定义限制”一节。
指定基本类型 复制链接链接已复制到粘贴板!
基础类型是被限制在定义新类型中的类型。它使用 限制 元素来指定。limit 元素是 simpleType 元素的唯一子项,它有一个属性 base,用于指定基本类型。基础类型可以是任何 XML Schema 简单的类型。
例如,若要通过限制 xsd:int 的值来定义一个新类型,您可以使用类似 例 2.14 “使用 int 作为基本类型” 所示的定义。
例 2.14. 使用 int 作为基本类型
<simpleType name="restrictedInt">
<restriction base="xsd:int">
...
</restriction>
</simpleType>
<simpleType name="restrictedInt">
<restriction base="xsd:int">
...
</restriction>
</simpleType>
定义限制 复制链接链接已复制到粘贴板!
定义对基本类型的限制的规则被称为 facets。facets 是带有一个属性( 值 )的元素,用于定义 facet 的强制实施方式。可用因素及其 有效值 设置取决于基本类型。例如,xsd:string 支持六个问题,包括:
-
length -
minLength -
maxLength -
pattern -
whitespace -
enumeration
每个 facet 元素都是 限制 元素的子项。
示例 复制链接链接已复制到粘贴板!
例 2.15 “SSN 简单的类型描述” 显示 SSN 的简单类型示例,它代表一个社交安全编号。生成的类型是 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>
<simpleType name="SSN">
<restriction base="xsd:string">
<pattern value="\d{3}-\d{2}-\d{4}"/>
</restriction>
</simpleType>