Untuk memahami atribut "encoding", Anda harus memahami perbedaan antara byte dan karakter .
Pikirkan byte sebagai angka antara 0 dan 255, sedangkan karakter adalah hal-hal seperti "a", "1" dan "Ä". Himpunan semua karakter yang tersedia disebut himpunan karakter .
Setiap karakter memiliki urutan satu atau lebih byte yang digunakan untuk mewakilinya; Namun, jumlah dan nilai byte yang tepat tergantung pada pengkodean yang digunakan dan ada banyak pengkodean yang berbeda.
Kebanyakan pengkodean didasarkan pada kumpulan karakter lama dan pengkodean yang disebut ASCII yang merupakan satu byte per karakter (sebenarnya, hanya 7 bit) dan berisi 128 karakter termasuk banyak karakter umum yang digunakan dalam bahasa Inggris AS.
Misalnya, berikut adalah 6 karakter dalam kumpulan karakter ASCII yang diwakili oleh nilai 60 hingga 65.
Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║ Character ║
╠══════╬══════════════║
║ 60 ║ < ║
║ 61 ║ = ║
║ 62 ║ > ║
║ 63 ║ ? ║
║ 64 ║ @ ║
║ 65 ║ A ║
╚══════╩══════════════╝
Dalam kumpulan ASCII lengkap, nilai terendah yang digunakan adalah nol dan tertinggi adalah 127 (keduanya adalah karakter kontrol tersembunyi).
Namun, begitu Anda mulai membutuhkan lebih banyak karakter daripada yang disediakan ASCII dasar (misalnya, huruf dengan aksen, simbol mata uang, simbol grafik, dll.), ASCII tidak sesuai dan Anda memerlukan sesuatu yang lebih ekstensif. Anda memerlukan lebih banyak karakter (kumpulan karakter yang berbeda) dan Anda memerlukan pengkodean yang berbeda karena 128 karakter tidak cukup untuk memuat semua karakter. Beberapa pengkodean menawarkan satu byte (256 karakter) atau hingga enam byte.
Seiring waktu, banyak penyandiaksaraan telah dibuat. Di dunia Windows, ada CP1252, atau ISO-8859-1, sedangkan pengguna Linux cenderung menyukai UTF-8. Java menggunakan UTF-16 secara native.
Satu urutan nilai byte untuk karakter dalam satu pengkodean mungkin mewakili karakter yang sama sekali berbeda dalam pengkodean lain, atau bahkan mungkin tidak valid.
Misalnya, dalam ISO 8859-1 , â diwakili oleh satu byte dari nilai 226
, sedangkan di UTF-8 itu adalah dua byte: 195, 162
. Namun, dalam ISO 8859-1 , 195, 162
akan menjadi dua karakter, Ã, ¢ .
Pikirkan XML bukan sebagai urutan karakter tetapi urutan byte.
Bayangkan sistem yang menerima XML melihat byte 195, 162
. Bagaimana cara mengetahui karakter apa ini?
Agar sistem dapat menafsirkan byte tersebut sebagai karakter sebenarnya (sehingga menampilkan atau mengonversinya ke pengkodean lain), sistem perlu mengetahui pengkodean yang digunakan dalam XML.
Karena sebagian besar pengkodean umum kompatibel dengan ASCII, sejauh karakter alfabet dan simbol dasar digunakan, dalam kasus ini, deklarasi itu sendiri dapat lolos dengan hanya menggunakan karakter ASCII untuk mengatakan apa pengkodeannya. Dalam kasus lain, parser harus mencoba dan mencari tahu pengkodean deklarasi tersebut. Karena mengetahui deklarasi dimulai dengan <?xml
itu, jauh lebih mudah untuk melakukan ini.
Terakhir, version
atribut menentukan versi XML, yang saat ini ada dua (lihat versi XML Wikipedia . Ada sedikit perbedaan di antara versinya, jadi pengurai XML perlu tahu apa yang ditangani. Dalam kebanyakan kasus (untuk bahasa Inggris) speaker), versi 1.0 sudah cukup.