XSD:xs:integer和xs:int有什么区别?

我已经开始创buildXSD,并在xs:integerxs:int几个示例中find。

xs:integerxs:int什么区别? 当我应该使用xs:integer ? 当我应该使用xs:int

区别如下: xs:int是一个带符号的32位整数。 xs:integer是一个整数无界值。 查看详情https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp例如,XJC(Java)为;xs:intBigInteger生成Integer for xs:integer

底线:如果你想跨平台工作,使用xs:int ,并确保你的数字通过没有问题。 如果你想要更大的数字 – 使用xs:long而不是xs:integer (它将被生成为Long )。

xs:integertypes是xs:decimal的一个限制,其中fractionDigits构面设置为零,并且具有禁止小数点和尾随零的词法空间,否则这些词将是合法的。 它没有最小值或最大值,尽pipe在有限尺寸的机器上运行的实现不需要能够接受任意大或小的值。 (他们需要支持hex数字的值。)

xs:inttypes是xs:long的限制,maxInclusive方面设置为2147483647,minInclusive方面为-2147483648。 (正如你所看到的,它可以很方便地放入一个二进制的32位有符号整数字段; xs:long适合于一个64位的有符号整数字段。)

通常的规则是:使用符合你想说的内容。 如果元素或属性的约束是它的值必须是一个整数,则xs:integer简洁地表示。 如果约束条件是该值必须是一个可以用二进制补码表示的最多32位表示的整数,则使用xs:int。 (一个次要的但有时是重要的问题是,你的工具链是否比另一个工作链更好,对于比你的工具链寿命更长的数据,首先倾听数据是明智的;对于只存在于工具中的数据链,如果你改变你的工具链,这将是没有意义的,没有理由不听工具链。)

我只是添加一些可能对某些人来说很重要的pedantry的说明:说xs:int“是”是一个有符号的32位整数是不正确的。 这种forms的词意味着在二进制数字计算机内存(或寄存器等)中的实现。 XML是基于字符的,并将实现最大32位有符号值为“2147483647”(当然,我的引号),这是32位以上! xs:int(间接)是xs:integer的一个限制,它将最大允许值和最小允许值设置为与具有符号位的32位整数的相应实施限制相同。