Risposte:
La differenza è la seguente:
xs:int
è un numero intero a 32 bit con segno.
xs:integer
è un valore intero illimitato. Vedere per i dettagli https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp
Ad esempio, XJC (Java) genera Integer
per xs:int
e BigInteger
per xs:integer
.
In conclusione: usa xs:int
se vuoi lavorare su più piattaforme e assicurati che i tuoi numeri passeranno senza problemi. Se vuoi numeri più grandi, usa xs:long
invece di xs:integer
(sarà generato a Long
).
Il tipo xs: integer è una restrizione di xs: decimal, con il facet fractionDigits impostato su zero e con uno spazio lessicale che proibisce il punto decimale e gli zeri finali che altrimenti sarebbero legali. Non ha un valore minimo o massimo, sebbene le implementazioni in esecuzione su macchine di dimensioni finite non siano richieste per essere in grado di accettare valori arbitrariamente grandi o piccoli. (Sono necessari per supportare valori con 16 cifre decimali.)
Il tipo xs: int è una restrizione di xs: long, con il facet maxInclusive impostato su 2147483647 e il facet minInclusive su -2147483648. (Come puoi vedere, si adatterà comodamente in un campo intero con segno a 32 bit a due complementi; xs: long si adatta a un campo intero con segno a 64 bit.)
La regola usuale è: usa quella che corrisponde a ciò che vuoi dire. Se il vincolo su un elemento o un attributo è che il suo valore deve essere un numero intero, xs: integer lo dice in modo conciso. Se il vincolo è che il valore deve essere un numero intero che può essere espresso con un massimo di 32 bit nella rappresentazione in complemento a due, utilizzare xs: int. (Una preoccupazione secondaria ma a volte importante è se la tua catena di strumenti funziona meglio con l'una che con l'altra. Per i dati che dureranno più a lungo della tua catena di strumenti, è saggio ascoltare prima i dati; per i dati che esistono esclusivamente per alimentare lo strumento catena, e che non sarà di alcun interesse se cambi la catena degli strumenti, non c'è motivo per non ascoltare la catena degli strumenti.)
Vorrei solo aggiungere una nota di pedanteria che potrebbe essere importante per alcune persone: non è corretto dire che xs: int "è" un intero con segno a 32 bit. Questa forma di parole implica un'implementazione in memoria (o registri, ecc.) All'interno di un computer digitale binario. XML è basato sui caratteri e implementerebbe il valore con segno massimo a 32 bit come "2147483647" (le mie virgolette, ovviamente), che è molto più di 32 bit! Ciò che è vero è che xs: int è (indirettamente) una restrizione di xs: integer che imposta i valori massimi e minimi consentiti in modo che corrispondano ai corrispondenti limiti imposti dall'implementazione di un intero a 32 bit con un bit di segno.
, but not
xs: int` oxs:long
.