Comencé a crear XSD y encontré un 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
? ¿Cuándo debo usar xs:int
?
La diferencia es la siguiente:
xs:int
es un entero de 32 bits con signo.
xs:integer
es un valor entero ilimitado. Para obtener más detalles
, consulte 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
.
La conclusión: utilícelo xs:int
si desea trabajar en plataformas cruzadas y asegúrese de que sus números pasen sin problemas. Si desea números más grandes, use en xs:long
lugar de xs:integer
(se generará Long
).
, but not
xs: int` oxs:long
.El tipo xs: integer es una restricción de xs: decimal, con la faceta fracciónDigits establecida en cero y con un espacio léxico que prohíbe el punto decimal y los ceros finales que de otra manera serían legales. No tiene un 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. (Deben admitir 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 se ajusta a un campo de entero con signo de 64 bits).
La regla habitual es: utilice la que coincida con lo que quiere decir. Si la restricción de un elemento o atributo es que su valor debe ser un número entero, xs: integer lo dice de forma concisa. Si la restricción es que el valor debe ser un número entero que pueda expresarse con un máximo de 32 bits en representación de complemento a dos, use xs: int. (Una preocupación secundaria, pero a veces importante, es si su cadena de herramientas funciona mejor con una que con la otra. Para los datos que durarán más que su cadena de herramientas, es aconsejable escuchar los datos primero; para los datos que existen únicamente para alimentar la herramienta cadena, y que no será de interés si cambia su cadena de herramientas, no hay razón para no escuchar la cadena de herramientas).
fuente
Solo 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 memoria (o registros, etc.) dentro de una computadora digital binaria. XML está basado en caracteres e implementaría el valor máximo de 32 bits con signo como "2147483647" (mis comillas, por supuesto), que es mucho más que 32 bits. Lo que SI 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 iguales a los límites impuestos por la implementación correspondientes de un entero de 32 bits con un bit de signo.
fuente