XML XSD Десятичная дробьЦифры

У меня есть схема XSD, которая представляет собой SimpleType - Decimal, FractionDigits = 2, как в этом примере Как указать минимальное значение для ограничения FractionDigits в XML-схеме?.

Это вполне справедливо позволяет:

12 12.34 12.06 12.5

Но также принимает 12.230000000 (не принимает 12.230000001). Почему он не распознает эти конечные нули?

Итак, есть ли способ разрешить только 2 цифры после запятой, чтобы были ошибки на 12.230000000?

Я пробовал ограничение шаблона, показанное здесь - Как указать минимальное значение для ограничения FractionDigits в XML-схеме? но, тем не менее, это не ошибка на 12.23000000.

Любая помощь будет принята с благодарностью - я уверен, что упускаю что-то очень простое!

спасибо Крейг


person Craig    schedule 05.12.2018    source источник
comment
даже если я установлю фракциюDigits fixed = true, это не исправит его до 2 знаков после запятой, так как он все равно примет 12.0000   -  person Craig    schedule 05.12.2018
comment
fixed=true означает нечто совершенно другое. Это влияет на то, что разрешено делать подтипам вашего типа.   -  person Michael Kay    schedule 08.12.2018


Ответы (1)


Аспект FractionDigits — это ограничение на пространство значений, а не на лексическое пространство. Это означает, что значение должно быть кратно 0,01, но нет никаких ограничений на способ записи значения.

Если вы хотите ограничить лексическое пространство (то есть способ записи значения), вы можете сделать это только с помощью фасета шаблона.

Лично я считаю ошибкой ограничивать лексическое пространство, потому что программы, генерирующие XML, обычно этого не учитывают. Но это зависит от вас.

Я не могу объяснить, почему ваша попытка использовать грань шаблона не увенчалась успехом. Если сделать как в посте, который вы цитируете, должно получиться.

person Michael Kay    schedule 05.12.2018