Pergunta

Eu percebo que o valor 0.00 não é um nonNegativeInteger válido, nem é mesmo um Integer. Infelizmente, os dados estão vindo nesse formato. Eu não quero jogá-lo fora se ele termina com 0,0, mas eu também não quero alterar o tipo para decimal e, possivelmente, têm valores que terminam em .1 entrando como válido.

Existe uma maneira minha XSD pode validar números de tal forma que eles são números inteiros apenas positivos, então os valores de 0,00, 0, 1, 1,0, 2,0 milhões etc são aceitos, mas -1, 1,1, 2,2, 3,3333 estão todos inválida ?

Graças -c

Foi útil?

Solução

Você poderia olhar para mudar para decimal e colocando uma restrição nos lugares após o ponto decimal. Em particular, você pode ser capaz de usar uma faceta regex. Eu nunca tentei isso, e nem sei se é válido, mas é uma direção para olhar. Você estaria restringindo o espaço lexical ao invés do espaço de valor, mas isso é o que você quer.

Outras dicas

Isso funciona para o que eu preciso, graças John

<xs:simpleType name="nonNegativeWholeDecimal">
    <xs:restriction base="xs:decimal">
        <xs:pattern value="[0-9]*(\.[0]*)?"/>
    </xs:restriction>
</xs:simpleType>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top