Pregunta

Quiero limitar el número de dígitos permitidos en un elemento a 6:

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

La especificación del formato de campo es de 6 dígitos, numérico, con tráfico cero.

Leí que podría querer usar la totalDigits restricción, basada en:

totalDigits Especifica el número exacto de dígitos permitidos. Debe ser mayor que cero

Entonces tengo el tipo simple:

<xs:simpleType name="AccountNumber">
   <xs:restriction base="xs:int">
      <xs:totalDigits value="6"/>
   </xs:restriction>
</xs:simpleType>

Y aunque atrapa números no válidos, como:

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

No atrapa números no vá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>

¿Cuál es una restricción sugerida para especificar el número exacto de dígitos permitidos?

¿Fue útil?

Solución

Necesitas usar xs:pattern y proporcionar una expresión regular para limitarla a un número.

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

Otros consejos

Esta es la forma más 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> 

Probablemente usaría XS: Mininclusive y XS: Maxinclusive.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top