Ответы:
Разница в следующем:
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
).
Тип 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-разрядного целого числа со знаковым битом.
, but not
xs: int` илиxs:long
.