2010-11-19 31 views
4

je veux limiter le nombre de chiffres autorisés dans un élément à 6:Schéma XSD: Comment spécifier le nombre de chiffres dans une valeur?

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

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

i read that i might want to use la restriction totalDigits, basée sur:

totalDigits Indique 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 alors qu'il attrape les numéros invalides, tels que:

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

il ne saisit pas les numéros invalides:

<AccountNumber>12345</AccountNumber> 
<AccountNumber></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?

Répondre

4

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

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

j'allais dire, * « Vous pouvez utiliser un modèle avec un' xs: int' bien comment ça. » * –

+1

@Ian: Oui, je était un peu surpris aussi. J'ai appris quelque chose répondant à cela. Toujours heureux d'aider. –

-1

Je probablement utiliser xs:minInclusive et xs:maxInclusive.

+0

... prend un certain temps pour notifier que d'autres réponses ont été postées – Anon

+0

Je crois que celles-ci limitent par la valeur et non par le nombre de chiffres. Comme si minInclusive est 7, cela signifie la valeur 7, pas 7 chiffres. –

+1

@Jeff - croiriez-vous que 'minInclusive' de 1000000 est à sept chiffres? Et ce 'maxExclusive' de 9999999 est également sept chiffres? – Anon

0

Ceci est la façon la 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>