Ich habe begonnen, XSD zu erstellen und in einigen Beispielen für xs:integer
und gefunden xs:int
.
Was ist der Unterschied zwischen xs:integer
und xs:int
? Wann sollte ich verwenden xs:integer
? Wann sollte ich verwenden xs:int
?
Der Unterschied ist folgender:
xs:int
ist eine vorzeichenbehaftete 32-Bit-Ganzzahl.
xs:integer
ist ein ganzzahliger unbegrenzter Wert. Weitere Informationen finden Sie unter https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp
. Beispielsweise generiert XJC (Java) Integer
für xs:int
und BigInteger
für xs:integer
.
Fazit: Verwenden xs:int
Sie diese Option, wenn Sie plattformübergreifend arbeiten möchten und sicherstellen möchten, dass Ihre Nummern problemlos weitergegeben werden. Wenn Sie größere Zahlen möchten, verwenden Sie xs:long
anstelle von xs:integer
(es wird generiert, um Long
).
, but not
xs: int` oderxs:long
.Der Integer- Typ xs: ist eine Einschränkung von xs: decimal, wobei die Facette fraktionDigits auf Null gesetzt ist und ein lexikalisches Leerzeichen den Dezimalpunkt und nachfolgende Nullen verbietet, die ansonsten zulässig wären. Es gibt keinen minimalen oder maximalen Wert, obwohl Implementierungen, die auf Maschinen endlicher Größe ausgeführt werden, nicht erforderlich sind, um beliebig große oder kleine Werte akzeptieren zu können. (Sie müssen Werte mit 16 Dezimalstellen unterstützen.)
Der Typ xs: int ist eine Einschränkung von xs: long, wobei die maxInclusive-Facette auf 2147483647 und die minInclusive-Facette auf -2147483648 festgelegt ist. (Wie Sie sehen können, passt es bequem in ein 32-Bit-Ganzzahlfeld mit zwei Komplementen und zwei Komplementen. Xs: long passt in ein 64-Bit-Ganzzahlfeld mit Vorzeichen.)
Die übliche Regel lautet: Verwenden Sie die Regel, die Ihren Vorstellungen entspricht. Wenn die Einschränkung für ein Element oder Attribut darin besteht, dass sein Wert eine Ganzzahl sein muss, sagt xs: integer dies kurz und bündig aus. Wenn die Einschränkung darin besteht, dass der Wert eine Ganzzahl sein muss, die mit höchstens 32 Bit in einer Zweierkomplementdarstellung ausgedrückt werden kann, verwenden Sie xs: int. (Ein sekundäres, aber manchmal wichtiges Problem ist, ob Ihre Werkzeugkette mit der einen besser funktioniert als mit der anderen. Bei Daten, die länger als Ihre Werkzeugkette leben, ist es ratsam, zuerst die Daten anzuhören, bei Daten, die nur zum Zuführen des Werkzeugs vorhanden sind Kette, und was für Sie nicht von Interesse ist, wenn Sie Ihre Werkzeugkette ändern, gibt es keinen Grund, nicht auf die Werkzeugkette zu hören.)
quelle
Ich möchte nur einen Hinweis auf Pedanterie hinzufügen, der für manche Menschen wichtig sein kann: Es ist nicht richtig zu sagen, dass xs: int eine vorzeichenbehaftete 32-Bit-Ganzzahl ist. Diese Form von Wörtern impliziert eine Implementierung im Speicher (oder in Registern usw.) innerhalb eines binären digitalen Computers. XML ist zeichenbasiert und würde den maximalen vorzeichenbehafteten 32-Bit-Wert als "2147483647" implementieren (meine Anführungszeichen natürlich), was viel mehr als 32 Bit ist! Was wahr ist, ist, dass xs: int (indirekt) eine Einschränkung von xs: integer ist, die die maximal und minimal zulässigen Werte so festlegt, dass sie den entsprechenden durch die Implementierung auferlegten Grenzen einer 32-Bit-Ganzzahl mit einem Vorzeichenbit entsprechen.
quelle