2011-07-29 56 views
3

我需要对可以取值介于1和48之间的整数进行限制,但也可以取单值63.可以这样做吗?XML Schema中的限制

我知道以下将处理第一个限制,但我怎样才能将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> 

回答

0

而不是使用一个整数基地,你可以使用正则表达式的?

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

<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> 

希望这有助于

+0

谢谢,克雷格。因此,我不能简单地添加一个枚举类似于 \t \t Moeman

0

在你的情况,你可以简单地使用枚举你需要和有基础,因为所有的值整数

<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> 
2

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

还是在XSD 1.1,只是定义了限制XS类型:整数与小

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

+0

谢谢,Michael。是完整的声明是这样的: Moeman

+0

谢谢,迈克尔 - 我需要这个声明在模式的顶部,对吧? 然后,我应该有其次是? – Moeman