我已经开始创建XSD,并在xs:integer
和xs:int
的几个示例中找到。
xs:integer
和xs:int
有什么区别?什么时候应该使用xs:integer
?什么时候应该使用xs:int
发布于 2013-03-11 18:59:32
区别如下:xs:int
是一个带符号的32位整数。xs:integer
是一个整数无界值。有关详细信息,请参阅https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp例如,XJC (Java)为xs:int
生成Integer
,为xs:integer
生成BigInteger
。
底线:如果您想跨平台工作,请使用xs:int
,并确保您的数字通过时没有问题。如果你想要更大的数字-使用xs:long
而不是xs:integer
(它将被生成为Long
)。
发布于 2013-03-11 23:34:36
xs:integer类型是对xs:decimal的限制,将fractionDigits facet设置为零,并使用禁止使用小数点和尾随零的词法空间,否则这是合法的。它没有最小值或最大值,尽管在有限大小的机器上运行的实现不需要能够接受任意大小的值。(它们需要支持16位十进制数的值。)
xs:int类型是xs:long的限制,maxInclusive方面设置为2147483647,minInclusive方面设置为-2147483648。(如您所见,它适合于双补32位有符号整数字段;xs:long适合于64位有符号整数字段。)
通常的规则是:使用与你想要表达的内容相匹配的规则。如果对元素或属性的约束是它的值必须是整数,那么xs:integer就可以简洁地说明这一点。如果约束条件是该值必须是在二进制补码表示中最多可以用32位表示的整数,则使用xs:int。(第二个但有时很重要的问题是,您的工具链是否与其中一个一起工作得更好。对于存在时间比工具链更长的数据,明智的做法是首先听取数据;对于仅为提供工具链而存在的数据,如果更改工具链,则没有理由不听取工具链。)
发布于 2013-09-23 23:01:50
我只想补充一点对某些人来说可能很重要的卖弄学问:说xs:int“是”有符号32位整数是不正确的。这种形式的字意味着在二进制数字计算机内的存储器(或寄存器等)中的实现。XML是基于字符的,它将最大32位有符号值实现为"2147483647“(当然是我的引号),这比32位要多得多!正确的是,xs:int (间接地)是xs:integer的限制,它将允许的最大值和最小值设置为与32位整数的符号位的相应实现施加的限制相同。
https://stackoverflow.com/questions/15336872
复制相似问题