XSD: xs: int 和 xs: int 之间的区别是什么?

我已经开始创建 XSD,并在 xs:integerxs:int的几个示例中找到了它们。

xs:integerxs:int有什么不同? 什么时候应该使用 xs:integer? 什么时候应该使用 xs:int

111083 次浏览

区别如下: xs:int是一个有符号的32位整数。 xs:integer是一个整数无界值。 详情请参阅 https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp For example, XJC (Java) generates Integer for xs:int and BigInteger for xs:integer.

The bottom line: use xs:int if you want to work cross platforms and be sure that your numbers will pass without a problem. 如果您想要更大的数字-使用 xs:long而不是 xs:integer(它将生成到 Long)。

整数类型是对 xs: decal 的限制,将 fractionDigits facet 设置为零,并使用一个词法空间禁止小数点和尾随零,否则这将是合法的。它没有最小值或最大值,尽管在有限大小的机器中运行的实现不需要能够接受任意大小的值。(它们必须支持16位十进制数字的值。)

xs:int类型是对 xs: long 的限制,maxIninclude facet 设置为2147483647,minIninclude facet 设置为 -2147483648。(正如您所看到的,它可以方便地适用于两个补数的32位有符号整数字段; xs: long 适用于64位有符号整数字段。)

通常的规则是: 使用与你想说的内容相匹配的那个。如果一个元素或属性的约束是它的值必须是一个整数,那么 xs: int 简洁地说明了这一点。如果约束是该值必须是一个整数,最多可以用两位补数表示的32位来表示,则使用 xs: int。(第二个但有时也很重要的问题是,你的工具链是否与其中一个相比更好地工作。对于那些比你的工具链存在的时间更长的数据,最明智的做法是先听数据; 对于那些仅仅为了满足工具链而存在的数据,如果你改变了你的工具链,它们就不会有任何意义,所以没有理由不去听工具链

我只想补充一点可能对某些人很重要的迂腐观点: 说 xs: int“是”一个有符号的32位整数是不正确的。这种形式的单词意味着在二进制数字计算机的内存(或寄存器等)中的实现。XML 是基于字符的,将实现最大32位有符号值“2147483647”(当然是我的引号) ,这远远超过32位!事实是,xs: int (间接地)是对 xs: int 的限制,它将允许的最大值和最小值设置为与带有符号位的32位整数的相应实现限制相同。