XML Schema中的限制

时间:2011-07-29 20:02:10

标签: xml xsd

我需要对一个整数进行限制,该整数可以取1到48之间的值,但也可以取单个值63.可以这样做吗?

我知道以下内容会处理第一个限制,但如何在列表中添加63?

    <xs:simpleType name="nameId">
      <xs:element name="id">
        <xs:simpleType>
          <xs:restriction base="xs:integer">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="48"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:simpleType>

3 个答案:

答案 0 :(得分:2)

定义两种类型:一种允许1-48范围内的整数,另一种只允许整数64;然后定义一个这两个联合的类型。

或者在XSD 1.1中,只需定义一个用facet

限制xs:integer的类型

<assert test="$value=(1 to 48, 64)"/>

答案 1 :(得分:0)

您可以使用RegEx而不是使用整数基数吗?

例如,这几乎可以工作,但它有一个警告......

   <xs:simpleType name="nameId">
      <xs:element name="id">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:pattern value="([1-4]{1}\d|63)"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:simpleType>

希望这有帮助

答案 2 :(得分:0)

在您的情况下,您可以简单地使用包含所需值的枚举,并将base作为整数

<xs:restriction base="xs:integer">
      <xs:enumeration value="1"/>
      <xs:enumeration value="2"/>
      <xs:enumeration value="3"/>
      <xs:enumeration value="4"/>
      <xs:enumeration value="5"/>
      <xs:enumeration value="6"/>
      <xs:enumeration value="7"/>
      <xs:enumeration value="8"/>
      <xs:enumeration value="9"/>
      <xs:enumeration value="10"/>
      <xs:enumeration value="11"/>
      <xs:enumeration value="12"/>
      <xs:enumeration value="13"/>
      <xs:enumeration value="14"/>
      <xs:enumeration value="15"/>
      <xs:enumeration value="16"/>
      <xs:enumeration value="17"/>
      <xs:enumeration value="18"/>
      <xs:enumeration value="19"/>
      <xs:enumeration value="20"/>
      <xs:enumeration value="21"/>
      <xs:enumeration value="22"/>
      <xs:enumeration value="23"/>
      <xs:enumeration value="24"/>
      <xs:enumeration value="25"/>
      <xs:enumeration value="26"/>
      <xs:enumeration value="27"/>
      <xs:enumeration value="28"/>
      <xs:enumeration value="29"/>
      <xs:enumeration value="30"/>
      <xs:enumeration value="31"/>
      <xs:enumeration value="32"/>
      <xs:enumeration value="33"/>
      <xs:enumeration value="34"/>
      <xs:enumeration value="36"/>
      <xs:enumeration value="36"/>
      <xs:enumeration value="37"/>
      <xs:enumeration value="38"/>
      <xs:enumeration value="39"/>
      <xs:enumeration value="40"/>
      <xs:enumeration value="41"/>
      <xs:enumeration value="42"/>
      <xs:enumeration value="43"/>
      <xs:enumeration value="44"/>
      <xs:enumeration value="45"/>
      <xs:enumeration value="46"/>
      <xs:enumeration value="47"/>
      <xs:enumeration value="48"/>
      <xs:enumeration value="63"/>
    </xs:restriction>