XSD 限制

创建于 2024-12-03 / 33
字体: [默认] [大] [更大]

限制用于定义XML元素或属性的可接受值。对XML元素的限制称为facet。


对值的限制

下面的实例定义了一个名为"age"是有限制的,年龄值不能小于0或大于120:

<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="120"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

对一组值的限制

为了将XML元素的内容限制为一组可接受的值,我们将使用枚举约束。

下面的实例定义了一个名为&quot;汽车;有限制的。唯一可接受的数值是:奥迪、高尔夫、宝马:

<xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Audi"/>
      <xs:enumeration value="Golf"/>
      <xs:enumeration value="BMW"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

上面的例子也可以这样写:

<xs:element name="car" type="carType"/>

<xs:simpleType name="carType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Audi"/>
    <xs:enumeration value="Golf"/>
    <xs:enumeration value="BMW"/>
  </xs:restriction>
</xs:simpleType>

注释: 在这种情况下,"carType"类型可以被其他元素使用,因为它不是"car"元素的一部分。



对一系列值的限制

为了限制XML元素的内容来定义一系列可以使用的数字或字母,我们将使用模式约束。

下面的实例定义了一个名为"letter"的元素,其中包含一个限制。唯一可接受的值是从a到z的小写字母之一:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"initials"的元素,其中包含一个限制。唯一可接受的值是从a到z的三个大写字母:

<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z][A-Z][A-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例还定义了一个名为"initials"的元素,其中包含一个限制。唯一可接受的值是从a到z的三个小写或大写字母:

<xs:element name="initials">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"choice"的元素,其中包含一个限制。唯一可接受的值是以下字母之一x、y或z:

<xs:element name="choice">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[xyz]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"prodid"的元素,其中包含一个限制。唯一可接受的值是序列中的五位数字,每个数字必须在0到9之间:

<xs:element name="prodid">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

对一系列值的其他限制

下面的实例定义了一个名为"letter"的元素,其中包含一个限制。可接受的值是从a到z的小写字母出现次数为零或更多:

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z])*"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例还定义了一个名为"letter"的元素,其中包含一个限制。可接受的值是一对或多对字母,每对由一个小写字母和一个大写字母组成。例如,"sToP"将通过此模式进行验证,而不是"sToP"或"sToP"或"sToP":

<xs:element name="letter">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-z][A-Z])+"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"gender"的元素,并带有一个限制。唯一可接受的值是男性或女性:

<xs:element name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

下一个实例定义了一个名为"password"的元素,其中有一个限制。一行中必须正好有八个字符,并且这些字符必须是从a到z的小写或大写字母,或者是从0到9的数字:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9]{8}"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

对空白字符的限制

要指定如何处理空白字符,我们将使用空白约束。

本例定义了一个名为"address"的元素,其中包含一个限制。空白约束设置为"preserve",这意味着XML处理器不会删除任何空白字符:

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="preserve"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

本例还定义了一个名为"address"的元素,其中包含一个限制。空白约束设置为"replace",这意味着XML处理器将用空格替换所有空白字符(换行符、制表符、空格和回车):

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="replace"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

本例还定义了一个名为"address" 的元素,其中包含一个限制。空格约束设置为"collapse",这意味着XML处理器将删除所有空格字符(换行符、制表符、空格、回车替换为空格,删除前导空格和尾随空格,并将多个空格缩减为单个空格):

<xs:element name="address">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:whiteSpace value="collapse"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

长度限制

为了限制元素中值的长度,我们将使用length、maxLength和minLength约束。

本例定义了一个名为"password"的元素,其中有一个限制。值必须正好是八个字符:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

本例定义了另一个名为"password"的元素,其中有一个限制。值必须至少为五个字符,最多为八个字符:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:minLength value="5"/>
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

数据类型限制

约束 描述
enumeration 定义可接受值的列表
fractionDigits 指定允许的最大小数位数。必须等于或大于零
length 指定允许的字符或列表项的确切数目。必须等于或大于零
maxExclusive 指定数值的上限(该值必须小于此值)
maxInclusive 指定数值的上限(该值必须小于或等于此值)
maxLength 指定允许的最大字符数或列表项。必须等于或大于零
minExclusive 指定数值的下限(该值必须大于该值)
minInclusive 指定数值的下限(该值必须大于或等于此值)
minLength 指定允许的最小字符数或列表项数。必须等于或大于零
pattern 定义可接受的字符的精确序列
totalDigits 指定允许的确切位数。必须大于零
whiteSpace 指定如何处理空格(换行符、制表符、空格和回车符)


0 人点赞过