2011-07-29 1 views
3

Je dois placer une restriction sur un nombre entier pouvant prendre des valeurs comprises entre 1 et 48, mais peut également prendre la valeur unique de 63. Est-ce possible?Restriction dans le schéma XML

Je sais que ce qui suit va prendre en compte la première restriction, mais comment puis-je ajouter 63 à la liste?

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

Répondre

0

Au lieu d'utiliser une base entière, vous pouvez utiliser une expression régulière?

Par exemple, ce serait presque fonctionner, mais il a une mise en garde ....

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

Hope this helps

+0

Merci, Craig. Donc, je ne peux pas simplement ajouter une énumération comme \t \t Moeman

0

Dans votre cas, vous pouvez simplement utiliser l'énumération avec toutes les valeurs dont vous avez besoin et ont la base comme entier

<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

définir deux types: l'un permet un nombre entier dans l'intervalle 1-48, et qui permet uniquement le nombre entier 64; puis définissez un type qui est l'union de ces deux.

Ou dans XSD 1.1, il suffit de définir un type qui limite xs: integer avec la facette

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

+0

Merci, Michael. Est-ce que la déclaration complète ressemble à ceci: Moeman

+0

Merci, Michael - J'ai besoin de cette déclaration en haut du schéma, n'est-ce pas? Et puis, je devrais avoir suivi par? – Moeman

Questions connexes