XSD - xs: nonNegativeInteger и значения, заканчивающиеся на .00 - PullRequest
0 голосов
/ 30 апреля 2009

Я понимаю, что значение 0,00 не является допустимым nonNegativeInteger и даже не является целым числом. К сожалению, данные поступают в этом формате. Я не хочу выбрасывать его, если он заканчивается на .0, но я также не хочу менять тип на Десятичный и, возможно, иметь значения, заканчивающиеся на .1, входящие в качестве действительных.

Есть ли способ, которым мой XSD может проверять числа таким образом, чтобы они были просто положительными целыми числами, так что все значения 0,00, 0, 1, 1.0, 2.0000000 и т. Д. Все принимаются, но -1, 1.1, 2.2, 3.3333 недопустимы

Спасибо -с

Ответы [ 2 ]

1 голос
/ 30 апреля 2009

Вы можете посмотреть, как перейти к десятичной дроби и установить ограничение на места после десятичной запятой. В частности, вы можете использовать фасет регулярного выражения. Я никогда не пробовал это, и даже не знаю, если это действительно так, но это направление, на которое нужно смотреть. Вы бы ограничивали лексическое пространство, а не пространство значений, но это то, что вы хотите.

0 голосов
/ 01 мая 2009

Это работает для того, что мне нужно, спасибо Джон

<xs:simpleType name="nonNegativeWholeDecimal">
    <xs:restriction base="xs:decimal">
        <xs:pattern value="[0-9]*(\.[0]*)?"/>
    </xs:restriction>
</xs:simpleType>
...