XSD:в чем разница между xs:integer и xs: int?



Я начал создавать XSD и нашел в паре примеров для xs:integer и xs:int.



в чем разница между xs:integer и xs:int?
Когда я должен использовать xs:integer?
Когда я должен использовать xs:int?

649   3  
xsd

3 ответов:

разница заключается в следующем: xs:int - Это 32-разрядное целое число. xs:integer - это целое неограниченное значение. Смотрите подробнее https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp Например, XJC (Java) генерирует Integer на xs:int и BigInteger на xs:integer.

в нижней строке: использовать xs:int Если вы хотите работать на кросс-платформах и быть уверены, что ваши номера пройдут без проблем. Если вы хотите большие числа-используйте xs:long вместо xs:integer (он будет сгенерирован в Long).

The xs: integer тип-это ограничение xs: decimal, с гранью fractionDigits, установленной в ноль, и с лексическим пространством, которое запрещает десятичную точку и конечные нули, которые в противном случае были бы законными. Он не имеет минимального или максимального значения, хотя реализации, работающие на машинах конечного размера, не обязательно должны иметь возможность принимать сколь угодно большие или малые значения. (Они должны поддерживать значения с 16 десятичными цифрами.)

в xs: int тип-это ограничение xs: long, с maxinclusive фасеткой, установленной на 2147483647, и minInclusive фасеткой на -2147483648. (Как вы можете видеть, он будет удобно вписываться в двухкомпонентное 32-разрядное целое поле со знаком; xs:long помещается в 64-разрядное целое поле со знаком.)

обычное правило: используйте тот, который соответствует тому, что вы хотите сказать. Если ограничение на элемент или атрибут заключается в том, что его значение должно быть целым числом, xs:integer говорит это кратко. Если ограничение заключается в том, что значение должно быть целым числом, которое может быть выражено не более чем 32 битами в представлении с двумя дополнениями, используйте xs:int. (Вторичная, но иногда важная проблема заключается в том, работает ли ваша цепочка инструментов лучше с одним, чем с другим. Для данных, которые будут жить дольше, чем ваша цепочка инструментов, разумно сначала слушать данные; для данных, которые существуют исключительно для подачи цепочки инструментов, и которые не будут представлять интереса, если вы измените свою цепочку инструментов, нет причин не слушать цепочка инструментов.)

Я бы просто добавил Примечание педантичности, которое может быть важно для некоторых людей: неверно говорить, что xs:int "является" 32-разрядным целым числом со знаком. Эта форма слов подразумевает реализацию в памяти (или регистрах и т. д.) в двоичном цифровом компьютере. XML основан на символах и будет реализовывать максимальное 32-разрядное знаковое значение как "2147483647" (мои кавычки, конечно), что намного больше, чем 32 бита! Верно то, что xs:int (косвенно) является ограничением xs: integer, которое устанавливает максимальное и минимальное допустимые значения должны совпадать с соответствующими ограничениями реализации 32-разрядного целого числа со знаковым битом.

Comments

    Ничего не найдено.