私は XSD の作成を開始し、 と のいくつかの例を見つけましxs:integer
たxs:int
。
xs:integer
とはどう違いxs:int
ますか?いつ使用する必要がありますxs:integer
か? いつ使用する必要がありますxs:int
か?
私は XSD の作成を開始し、 と のいくつかの例を見つけましxs:integer
たxs:int
。
xs:integer
とはどう違いxs:int
ますか?いつ使用する必要がありますxs:integer
か? いつ使用する必要がありますxs:int
か?
違いは次のとおりです。
xs:int
は符号付き 32 ビット整数です。
xs:integer
無制限の整数値です。詳細については、 https://web.archive.org/web/20151117073716/http: //www.w3schools.com/schema/schema_dtypes_numeric.asp を参照してください。
たとえば、XJC (Java) はInteger
forxs:int
とBigInteger
for を生成しxs:integer
ます。
結論:xs:int
クロスプラットフォームで作業したい場合に使用し、数値が問題なく通過することを確認してください。より大きな数が必要な場合はxs:long
、の代わりに使用しますxs:integer
(に生成されますLong
)。
xs:integer型は、xs:decimalの制限であり、fractionDigits ファセットがゼロに設定され、小数点と末尾のゼロを禁止する字句スペースがあります。最小値または最大値はありませんが、有限サイズのマシンで実行される実装は、任意に大きい値または小さい値を受け入れることができる必要はありません。(これらは、10 進数 16 桁の値をサポートするために必要です。)
xs:intタイプは xs:longの制限であり、maxInclusive ファセットは 2147483647 に設定され、minInclusive ファセットは -2147483648 に設定されます。(ご覧のとおり、これは 2 の補数の 32 ビットの符号付き整数フィールドに都合よく収まります。xs:long は 64 ビットの符号付き整数フィールドに収まります。)
通常のルールは、言いたいことと一致するものを使用することです。要素または属性の制約が、その値が整数でなければならないというものである場合、 xs:integer はそれを簡潔に言います。値が 2 の補数表現で最大 32 ビットで表現できる整数でなければならないという制約がある場合は、xs:int を使用します。(2 つ目の重要な懸念事項として、ツール チェーンが他のツール チェーンよりも適切に機能するかどうかがあります。ツール チェーンよりも長く存続するデータについては、最初にデータをリッスンするのが賢明です。ツールに供給するためだけに存在するデータについては、ツール チェーンを変更しても意味がないので、ツール チェーンに耳を傾けない理由はありません。)
xs:int が符号付き 32 ビット整数「である」と言うのは正しくありません。この形式の単語は、バイナリ デジタル コンピューター内のメモリ (またはレジスタなど) での実装を意味します。XML は文字ベースであり、最大 32 ビットの符号付き値を「2147483647」として実装します (もちろん私の引用です)。これは 32 ビットよりもはるかに大きいです! xs:int は (間接的に) xs:integer の制限であり、許容される最大値と最小値を、符号ビット付きの 32 ビット整数の対応する実装上の制限と同じに設定します。