Saya sudah mulai membuat XSD dan menemukan beberapa contoh untuk xs:integer
dan xs:int
.
Apa perbedaan antara xs:integer
dan xs:int
? Kapan saya harus menggunakan xs:integer
? Kapan saya harus menggunakan xs:int
?
Perbedaannya adalah sebagai berikut:
xs:int
adalah integer 32-bit bertanda.
xs:integer
adalah nilai integer tak terbatas. Lihat untuk detailnya https://web.archive.org/web/20151117073716/http://www.w3schools.com/schema/schema_dtypes_numeric.asp
Misalnya, XJC (Java) menghasilkan Integer
untuk xs:int
dan BigInteger
untuk xs:integer
.
Intinya: gunakan xs:int
jika Anda ingin bekerja lintas platform dan pastikan nomor Anda akan lulus tanpa masalah. Jika Anda menginginkan nomor yang lebih besar - gunakan xs:long
sebagai pengganti xs:integer
(ini akan dibuat menjadi Long
).
, but not
xs: int` atauxs:long
.Tipe xs: integer adalah batasan dari xs: desimal, dengan faset fractionDigits disetel ke nol dan dengan spasi leksikal yang melarang titik desimal dan nol di belakang yang seharusnya legal. Ini tidak memiliki nilai minimum atau maksimum, meskipun implementasi yang berjalan di mesin berukuran terbatas tidak diharuskan untuk dapat menerima nilai besar atau kecil secara sewenang-wenang. (Mereka diperlukan untuk mendukung nilai dengan 16 digit desimal.)
Tipe xs: int adalah batasan dari xs: long, dengan faset maxInclusive disetel ke 2147483647 dan faset minInclusive ke -2147483648. (Seperti yang Anda lihat, ini akan cocok dengan nyaman ke dalam bidang bilangan bulat bertanda 32-bit dua komplemen; xs: panjang pas dalam bidang bilangan bulat bertanda 64-bit.)
Aturan yang biasa adalah: gunakan salah satu yang cocok dengan apa yang ingin Anda katakan. Jika batasan pada elemen atau atribut adalah bahwa nilainya harus berupa bilangan bulat, xs: integer akan mengatakannya secara ringkas. Jika batasannya adalah bahwa nilai harus berupa bilangan bulat yang dapat diekspresikan dengan maksimal 32 bit dalam representasi dua komplemen, gunakan xs: int. (Masalah sekunder namun terkadang penting adalah apakah rantai alat Anda berfungsi lebih baik dengan yang satu dibandingkan dengan yang lain. Untuk data yang akan hidup lebih lama dari rantai alat Anda, sebaiknya dengarkan datanya terlebih dahulu; untuk data yang ada hanya untuk memberi makan alat tersebut rantai, dan yang tidak akan menarik jika Anda mengubah rantai alat Anda, tidak ada alasan untuk tidak mendengarkan rantai alat.)
sumber
Saya hanya akan menambahkan catatan tentang pedantry yang mungkin penting bagi sebagian orang: tidak benar untuk mengatakan bahwa xs: int "adalah" integer 32-bit yang ditandatangani. Bentuk kata-kata itu menyiratkan implementasi dalam memori (atau register, dll) dalam komputer digital biner. XML berbasis karakter dan akan menerapkan nilai maksimum 32-bit yang ditandatangani sebagai "2147483647" (kutipan saya, tentu saja), yang lebih dari 32 bit! Apa yang benar adalah bahwa xs: int adalah (secara tidak langsung) batasan dari xs: integer yang menetapkan nilai maksimum dan minimum yang diizinkan menjadi sama dengan batas yang diberlakukan implementasi terkait dari integer 32-bit dengan bit tanda.
sumber