web-dev-qa-db-ja.com

XSD:xs:integerとxs:intの違いは何ですか?

XSDの作成を開始しましたが、xs:integerxs:intの例がいくつか見つかりました。

xs:integerxs:intの違いは何ですか? xs:integerを使用する必要がある場合xs:intを使用する必要がある場合

105
Michael

違いは次のとおりです。xs:intは符号付き32ビット整数です。 xs:integerは整数の無制限値です。詳細については https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp たとえば、XJC(Java)はInteger for xs:intおよびBigInteger for xs:integer

一番下の行:クロスプラットフォームで作業したい場合はxs:intを使用し、数字が問題なく通過することを確認してください。より大きな数値が必要な場合は、xs:longの代わりにxs:integerを使用します(Longに生成されます)。

102
Michael

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を使用します。 (二次的ですが、時には重要な懸念は、ツールチェーンが他のツールチェーンよりもうまく機能するかどうかです。チェーン、およびツールチェーンを変更する場合は関係ありませんが、ツールチェーンを聞かない理由はありません。)

一部の人々にとって重要な可能性のあるペダントリーのメモを追加するだけです。xs:intが32ビットの符号付き整数であると言うのは正しくありません。この形式の単語は、バイナリデジタルコンピューター内のメモリ(またはレジスタなど)での実装を意味します。 XMLは文字ベースであり、最大32ビットの符号付き値を「2147483647」(もちろん引用符)として実装しますが、これは32ビットをはるかに超えています! IS trueとは、xs:intが(間接的に)最大許容値と最小許容値を符号付きの32ビット整数の対応する実装制限と同じに設定するxs:integerの制限であることですビット。

6
PeteCahill