Question

Je réalise que la valeur 0.00 n’est pas un nonNegativeInteger valide, ni même un Integer. Malheureusement, les données arrivent dans ce format. Je ne veux pas le jeter s'il se termine par .0, mais je ne veux pas non plus changer le type en Decimal et avoir éventuellement des valeurs se terminant par .1 comme valides.

Existe-t-il un moyen permettant à mon XSD de valider des nombres de sorte qu'ils ne soient que des nombres entiers positifs; les valeurs de 0.00, 0, 1, 1.0, 2.0000000, etc., sont toutes acceptées, mais -1, 1.1, 2.2, 3.3333 sont toutes non valides ?

Merci -c

Était-ce utile?

La solution

Vous pouvez envisager de passer à la décimale et de placer une restriction sur les emplacements après la virgule. En particulier, vous pourrez peut-être utiliser une facette regex. Je n'ai jamais essayé cela, et je ne sais même pas si c'est valable, mais c'est une direction à regarder. Vous seriez en train de restreindre l'espace lexical plutôt que l'espace de valeurs, mais c'est ce que vous voulez.

Autres conseils

Cela fonctionne pour ce dont j'ai besoin, merci John

<xs:simpleType name="nonNegativeWholeDecimal">
    <xs:restriction base="xs:decimal">
        <xs:pattern value="[0-9]*(\.[0]*)?"/>
    </xs:restriction>
</xs:simpleType>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top