Réponses:
La différence est la suivante:
xs:int
est un entier 32 bits signé.
xs:integer
est une valeur entière illimitée. Voir pour plus de détails https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp
Par exemple, XJC (Java) génère Integer
pour xs:int
et BigInteger
pour xs:integer
.
L'essentiel: à utiliser xs:int
si vous souhaitez travailler sur plusieurs plates-formes et assurez-vous que vos numéros passeront sans problème. Si vous voulez des nombres plus grands, utilisez à la xs:long
place de xs:integer
(il sera généré vers Long
).
Le type xs: integer est une restriction de xs: decimal, avec la facette fractionDigits mise à zéro et avec un espace lexical qui interdit le point décimal et les zéros de fin qui seraient autrement légaux. Il n'a pas de valeur minimale ou maximale, bien que les implémentations exécutées sur des machines de taille finie ne soient pas nécessaires pour pouvoir accepter des valeurs arbitrairement grandes ou petites. (Ils doivent prendre en charge les valeurs à 16 chiffres décimaux.)
Le type xs: int est une restriction de xs: long, avec la facette maxInclusive définie sur 2147483647 et la facette minInclusive sur -2147483648. (Comme vous pouvez le voir, il s'intégrera facilement dans un champ entier signé 32 bits à deux compléments; xs: long tient dans un champ entier signé 64 bits.)
La règle habituelle est la suivante: utilisez celui qui correspond à ce que vous voulez dire. Si la contrainte sur un élément ou un attribut est que sa valeur doit être un entier, xs: integer le dit de manière concise. Si la contrainte est que la valeur doit être un entier qui peut être exprimé avec au plus 32 bits dans une représentation à complément de deux, utilisez xs: int. (Une question secondaire mais parfois importante est de savoir si votre chaîne d'outils fonctionne mieux avec l'une qu'avec l'autre. Pour les données qui dureront plus longtemps que votre chaîne d'outils, il est sage d'écouter d'abord les données; pour les données qui existent uniquement pour alimenter l'outil et qui ne seront d'aucun intérêt si vous changez votre chaîne d'outils, il n'y a aucune raison de ne pas écouter la chaîne d'outils.)
Je voudrais juste ajouter une note de pédantisme qui peut être importante pour certaines personnes: il n'est pas correct de dire que xs: int "est" un entier 32 bits signé. Cette forme de mots implique une implémentation en mémoire (ou registres, etc.) au sein d'un ordinateur numérique binaire. XML est basé sur des caractères et implémenterait la valeur signée maximale de 32 bits en tant que "2147483647" (mes guillemets, bien sûr), ce qui est bien plus que 32 bits! Ce qui est vrai, c'est que xs: int est (indirectement) une restriction de xs: integer qui définit les valeurs maximales et minimales autorisées pour qu'elles soient les mêmes que les limites imposées par l'implémentation correspondantes d'un entier 32 bits avec un bit de signe.
, but not
xs: int» ouxs:long
.