2011-07-29 57 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