Schéma XSD: comment spécifier le nombre de chiffres en valeur?
-
26-09-2019 - |
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?
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.