XSD - xs: nonNegativeInteger e valori che terminano con .00
Domanda
Mi rendo conto che il valore 0.00 non è un valore non negativo intero, né un numero intero. Sfortunatamente, i dati arrivano in quel formato. Non voglio buttarlo via se termina con .0 ma, anche, non voglio cambiare il tipo in decimale e possibilmente avere valori che terminano con .1 e risultano validi.
C'è un modo in cui il mio XSD può convalidare i numeri in modo che siano solo numeri interi positivi, quindi i valori di 0.00, 0, 1, 1.0, 2.0000000 ecc sono tutti accettati, ma -1, 1.1, 2.2, 3.3333 non sono tutti validi ?
Grazie -c
Soluzione
Potresti vedere come passare al decimale e posizionare una restrizione sui punti dopo il punto decimale. In particolare, potresti essere in grado di utilizzare un aspetto regex. Non l'ho mai provato e non so nemmeno se sia valido, ma è una direzione da guardare. Limiteresti lo spazio lessicale piuttosto che lo spazio valore, ma è quello che vuoi.
Altri suggerimenti
Funziona per quello che mi serve, grazie John
<xs:simpleType name="nonNegativeWholeDecimal">
<xs:restriction base="xs:decimal">
<xs:pattern value="[0-9]*(\.[0]*)?"/>
</xs:restriction>
</xs:simpleType>