data - xsd type long
XSD: ¿Cuál es la diferencia entre xs: integer y xs: int? (3)
El tipo xs:integer es una restricción de xs: decimal, con la faceta fractionDigits puesta a cero y con un espacio léxico que prohíbe el punto decimal y los ceros finales que de otro modo serían legales. No tiene ningún valor mínimo o máximo, aunque las implementaciones que se ejecutan en máquinas de tamaño finito no son necesarias para poder aceptar valores arbitrariamente grandes o pequeños. (Se requiere que admitan valores con 16 dígitos decimales).
El tipo xs:int es una restricción de xs: long, con la faceta maxInclusive establecida en 2147483647 y la faceta minInclusive en -2147483648. (Como puede ver, encajará convenientemente en un campo de entero con signo de 32 bits de dos complementos; xs: long cabe en un campo de entero con signo de 64 bits).
La regla habitual es: use la que coincida con lo que desea decir. Si la restricción en un elemento o atributo es que su valor debe ser un número entero, xs: entero lo dice de manera concisa. Si la restricción es que el valor debe ser un entero que se puede expresar con un máximo de 32 bits en representación de complemento a dos, utilice xs: int. (Una cuestión secundaria, pero a veces importante, es si la cadena de herramientas funciona mejor con una que con la otra. Para datos que vivirán más tiempo que la cadena de herramientas, es prudente escuchar los datos primero, para datos que existen únicamente para alimentar la herramienta cadena, y que no tendrá ningún interés si cambia su cadena de herramientas, no hay razón para no escuchar la cadena de herramientas).
Empecé a crear XSD y encontré en par de ejemplos para xs:integer
y xs:int
.
¿Cuál es la diferencia entre xs:integer
y xs:int
? ¿Cuándo debo usar xs:integer
? Cuando debería usar xs:int
?
La diferencia es la siguiente: xs:int
es un entero de 32 bits con signo. xs:integer
es un valor ilimitado entero. Consulte los detalles https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp Por ejemplo, XJC (Java) genera Integer
para xs:int
y BigInteger
para xs:integer
.
El resultado final: utilice xs:int
si desea trabajar en plataformas cruzadas y asegúrese de que sus números se transmitirán sin problemas. Si desea números más grandes, use xs:long
lugar de xs:integer
(se generará en Long
).
Simplemente agregaría una nota de pedantería que puede ser importante para algunas personas: no es correcto decir que xs: int "es" un entero de 32 bits con signo. Esa forma de palabras implica una implementación en la memoria (o registros, etc.) dentro de una computadora digital binaria. XML se basa en caracteres e implementaría el valor máximo de 32 bits firmado como "2147483647" (mis citas, por supuesto), ¡que es mucho más que 32 bits! Lo que ES cierto es que xs: int es (indirectamente) una restricción de xs: integer que establece que los valores máximos y mínimos permitidos sean los mismos que los límites impuestos por la implementación correspondiente de un entero de 32 bits con un bit de signo.