2015-09-16 3 views
3

Я сегодня ссылался на XSD spec, осматривая определение десятичного типа. В ней я нашел две различных противоречивые определения типа данных, лексического определения и канонического определения цитируемых ниже:Разница между лексическим и каноническим представлением в XSD spec

3.2.3.1 лексической репрезентации

десятичного имеет лексическое представление, состоящую из конечная длина Последовательность десятичных цифр (# x30- # x39), разделенная периодом как десятичный индикатор . Допустимый ведущий знак разрешен. Если знак « » опущен, предполагается «+». Ведущие и конечные нули являются необязательными. Если дробная часть равна нулю, период и следующий нуль (es) можно опустить. Например: -1.23, 12678967.543233, +100000.00, 210.

3.2.3.2 Каноническое представление

Каноническое представление для десятичной определяется путем запрета определенные параметры из лексического представления (§ 3.2.3.1). В частности, предыдущий необязательный знак «+» запрещен. Требуется десятичная точка . Ведущие и конечные нули запрещены к следующему: должно быть не менее одной цифры справа и слева от десятичной точки, которая может быть равна нулю.

В целом, лексическое представление допускает отсутствие десятичной точки и конечные нули, если дробная часть десятичного равно нуль, в то время как каноническое представление в явном виде указывается требуется десятичный.

Какое из этих определений является «правильным»? Мое приложение отправляет лексическое представление, а потребляющее приложение ожидает канонического представления.

ответ

2

Действительность в XSD определяется как лексическое представление, а не каноническое представление, поэтому ваше приложение отлично находится в пределах его права в соответствии с любым контрактом, данным строго XSD, вызывающим xs:decimal, чтобы исключить десятичную точку в отсутствие дробная часть.

Каноническое представление не используется в XSD, но предлагает стандартный способ сериализации типов данных для других рекомендаций W3C, таких как XPath/XQuery.

+1

Спасибо за этот ответ. Друг по кодированию также нашел эту статью, которая действительно помогла мне понять, что это был меньше вопрос спецификации xml и фактически вопрос, общий для любого определения типа данных на любом языке или спецификации (я нашел изображения, особенно иллюстрирующие концепцию): http: //www.oracle.com/technetwork/articles/srivastava-datatypes-087961.html – Russ