Question

Je veux limiter le nombre de chiffres autorisés dans un élément à 6:

<AccountNumber>123456</AccountNumber>
<AccountNumber>999999</AccountNumber>
<AccountNumber>000000</AccountNumber>

La spécification du format de champ est à 6 chiffres, zéro padded, numérique.

J'ai lu que je pourrais vouloir utiliser la totalDigits restriction, basée sur:

totalDigits Spécifie le nombre exact de chiffres autorisés. Doit être supérieur à zéro

J'ai donc le type simple:

<xs:simpleType name="AccountNumber">
   <xs:restriction base="xs:int">
      <xs:totalDigits value="6"/>
   </xs:restriction>
</xs:simpleType>

Et bien qu'il attrape des nombres non valides, tels que:

<AccountNumber>1234567</AccountNumber>
<AccountNumber>0000000</AccountNumber>
<AccountNumber></AccountNumber>

Il n'attrape pas des numéros non valides:

<AccountNumber>12345</AccountNumber>
<AccountNumber>01234</AccountNumber>
<AccountNumber>00123</AccountNumber>
<AccountNumber>00012</AccountNumber>
<AccountNumber>00001</AccountNumber>
<AccountNumber>00000</AccountNumber>
<AccountNumber>0000</AccountNumber>
<AccountNumber>000</AccountNumber>
<AccountNumber>00</AccountNumber>
<AccountNumber>0</AccountNumber>

Qu'est-ce qu'une restriction suggérée pour spécifier le nombre exact de chiffres autorisés?

Était-ce utile?

La solution

Vous devez utiliser xs:pattern et fournir une expression régulière pour le limiter à un nombre.

<xs:simpleType name="AccountNumber">
   <xs:restriction base="xs:int">
      <xs:pattern value="\d{6}"/>
   </xs:restriction>
</xs:simpleType>

Autres conseils

C'est le moyen le plus simple

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

J'utiliserais probablement XS: Mininclusif et XS: maxinclusif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top