Schema XSD: come specificare il numero di cifre in un valore?
-
26-09-2019 - |
Domanda
Voglio limitare il numero di cifre consentite in un elemento a 6:
<AccountNumber>123456</AccountNumber>
<AccountNumber>999999</AccountNumber>
<AccountNumber>000000</AccountNumber>
La specifica del formato di campo è a 6 cifre, a zero, numerico.
Ho letto che potrei voler usare il totalDigits
restrizione, basata su:
totalDigits
Specifica il numero esatto di cifre consentite. Deve essere maggiore di zero
Quindi ho il tipo semplice:
<xs:simpleType name="AccountNumber">
<xs:restriction base="xs:int">
<xs:totalDigits value="6"/>
</xs:restriction>
</xs:simpleType>
E mentre cattura numeri non validi, come ad esempio:
<AccountNumber>1234567</AccountNumber>
<AccountNumber>0000000</AccountNumber>
<AccountNumber></AccountNumber>
Non cattura numeri non validi:
<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>
Qual è una restrizione suggerita per specificare il numero esatto di cifre consentite?
Soluzione
Devi usare xs:pattern
e fornire un'espressione regolare per limitarlo a un numero.
<xs:simpleType name="AccountNumber">
<xs:restriction base="xs:int">
<xs:pattern value="\d{6}"/>
</xs:restriction>
</xs:simpleType>
Altri suggerimenti
Questo è il modo più semplice
<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>
Probabilmente lo userei XS: mininclusive e XS: maxinclusive.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow