Esquema XSD: Como especificar o número de dígitos em um valor?
-
26-09-2019 - |
Pergunta
Quero limitar o número de dígitos permitidos em um elemento a 6:
<AccountNumber>123456</AccountNumber>
<AccountNumber>999999</AccountNumber>
<AccountNumber>000000</AccountNumber>
A especificação do formato de campo é de 6 dígitos, acolchoada com zero, numérico.
Eu li que posso querer usar a totalDigits
Restrição, com base em:
totalDigits
Especifica o número exato de dígitos permitidos. Deve ser maior que zero
Então, eu tenho o tipo simples:
<xs:simpleType name="AccountNumber">
<xs:restriction base="xs:int">
<xs:totalDigits value="6"/>
</xs:restriction>
</xs:simpleType>
E enquanto capta números inválidos, como:
<AccountNumber>1234567</AccountNumber>
<AccountNumber>0000000</AccountNumber>
<AccountNumber></AccountNumber>
Não captura números inválidos:
<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>
O que é uma restrição sugerida para especificar o número exato de dígitos permitidos?
Solução
Você precisa usar xs:pattern
e forneça uma expressão regular para limitá -la a um número.
<xs:simpleType name="AccountNumber">
<xs:restriction base="xs:int">
<xs:pattern value="\d{6}"/>
</xs:restriction>
</xs:simpleType>
Outras dicas
Esta é a maneira mais simples
<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>
Eu provavelmente usaria XS: Mininclusive e XS: Maxinclusive.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow