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?

Foi útil?

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