Arti - <? Xml version = "1.0" encoding = "utf-8"?>

103

Saya baru mengenal XML dan saya mencoba memahami dasar-dasarnya. Saya membaca baris di bawah ini dalam "Belajar XML", tetapi bagi saya masih belum jelas. Dapatkah seseorang mengarahkan saya ke buku atau situs web yang menjelaskan dasar-dasar ini dengan jelas?

Dari Belajar XML :

Deklarasi XML menjelaskan beberapa properti paling umum dari dokumen, memberi tahu pemroses XML bahwa ia memerlukan pengurai XML untuk menafsirkan dokumen ini.

Apa artinya ini?

Saya memahami xml versionbagian - baik doc dan pengguna doc harus "berbicara" dalam versi XML yang sama. Tapi bagaimana dengan encodingbagiannya? Mengapa itu perlu?

XML Boy
sumber
Kemungkinan duplikat dari Apa gunanya 'encoding' di header XML?
Jonathan Leffler

Jawaban:

126

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, 162akan 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 <?xmlitu, jauh lebih mudah untuk melakukan ini.

Terakhir, versionatribut 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.

rghome
sumber
9
"Tajuknya sendiri menggunakan pengkodean ASCII": Saya rasa Anda merujuk pada deklarasi XML. Ini dikodekan seperti bagian dokumen lainnya; UTF-16 atau yang lainnya. Pemroses XML dapat melakukan beberapa uji coba hingga dapat membaca spesifikasi pengkodean.
Tom Blodget
1
Saya mendapat kesan bahwa pembukaan / prolog akan dikodekan di bawah UTF-8 dan yang memberi tahu parser bagaimana mengubah byte yang tersisa (dokumen XML yang sebenarnya) ke pengkodean yang benar. Salah lagi! :-)
Kelly Beard
5
Berikut adalah bacaan yang disarankan: joelonsoftware.com/2003/10/08/…
Sudip Bhandari
26

Deklarasi XML tidak diperlukan dalam semua dokumen XML; namun penulis dokumen XHTML sangat dianjurkan untuk menggunakan deklarasi XML di semua dokumen mereka. Deklarasi seperti itu diperlukan jika pengkodean karakter dokumen selain UTF-8 default atau UTF-16 dan tidak ada pengkodean yang ditentukan oleh protokol tingkat yang lebih tinggi. Berikut adalah contoh dokumen XHTML. Dalam contoh ini, deklarasi XML disertakan.

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

Silakan merujuk ke standar W3 untuk XML .

Pavan
sumber
4
yang xml ditautkan ke xhtml. apakah Anda bermaksud menautkan ke xml w3.org/TR/xml atau apakah Anda bermaksud memberi nama tautan tersebut xhtml?
jrwren
Xhtml mengacu pada dokumentasi xml. Deklarasi Jenis Dokumen tidak diperlukan untuk format xml dengan baik.
xvan
"Silakan merujuk ke standar W3 untuk XML." IOW, baca faq faq, yang merupakan dokumen panjang. Mengapa orang tidak bisa begitu saja menjelaskan apa "?" tidak dan mengapa itu ada ???
Blessed Geek
3

Ini adalah pembukaan opsional XML .

  • version="1.0" berarti ini adalah standar XML yang sesuai dengan file ini
  • encoding="utf-8" berarti file tersebut dikodekan menggunakan encoding UTF-8 Unicode
Oded
sumber
2

Dapatkah seseorang mengarahkan saya ke buku atau situs web yang menjelaskan dasar-dasar ini dengan jelas?

Anda dapat memeriksa Tutorial XML ini dengan contoh.

Tapi bagaimana dengan bagian encoding? Mengapa itu perlu?

W3C memberikan penjelasan tentang encoding:

"Kumpulan karakter dokumen untuk XML dan HTML 4.0 adalah Unicode (alias ISO 10646). Ini berarti bahwa browser HTML dan pemroses XML harus berperilaku seolah-olah mereka menggunakan Unicode secara internal. Tetapi itu tidak berarti bahwa dokumen harus dikirim dalam Unicode. Selama klien dan server menyetujui pengkodean, mereka dapat menggunakan pengkodean apa pun yang dapat dikonversi ke Unicode ... "

O. Badr
sumber
-1

Deklarasi XML di peta dokumen terdiri dari berikut ini:

The version number, ?xml version="1.0"?. 

Ini wajib. Meskipun jumlahnya mungkin berubah untuk versi XML mendatang, 1.0 adalah versi saat ini.

Deklarasi encoding,

encoding="UTF-8"?

Ini opsional. Jika digunakan, deklarasi encoding harus muncul segera setelah informasi versi dalam deklarasi XML, dan harus berisi nilai yang mewakili encoding karakter yang ada.

kshama singh
sumber