XML

XML (Extensible Markup Language, dalam bahasa Melayu Bahasa Penanda Boleh Perluas) ialah sebuah bahasa penanda yang disyorkan oleh Konsortium Jaringan Sejagat (W3C) untuk kegunaan umum dalam format yang boleh dibaca manusia dan boleh dibaca mesin. Ia didefinisikan dalam XML 1.0 Specification yang dikeluarkan W3C, dan beberapa spesifikasi berkaitan yang lain,  yang kesemuanya piawai terbuka percuma.

Sasaran reka bentuk XML menitikberatkan kesenangan penggunaan, keitlakan, dan kebolehgunaan menerusi Internet.  Ia merupakan format data teks yang mempunyai sokongan kuat bagi bahasa-bahasa dunia melalui Unicode. Kendatipun reka bentuk XML tertumpu kepada dokumen, ia digunakan secara meluas bagi penggambaran struktur data sebarangan yang terdapat, misalnya, dalam perkhidmatan web.

Berbeza dengan bahasa penanda lain seperti HTML, ia tidak melakukan apa-apa selain menyimpan data. Dalam kata lain, XML tidak memaparkan data, sebaliknya memegang data.

Istilah penting 

Bahan yang ditampilkan di bahagian ini berlandaskan Spesifikasi XML. Ia bukan senarai menyeluruh kesemua binaan yang terdapat dalam XML dan hanya menunujukkan binaan-binaan penting yang sering ditemui dalam penggunaan seharian XML. use.

Aksara (Unicode)  Mengikut definisinya, sebuah dokumen XML ialah rentetan aksara. Hampir kesemua aksara Unicode sah boleh hadir dalam dokumen XML.

Pemproses dan aplikasi Pemproses menganalisis bahasa penanda dan memanjangkan maklumat berstruktur kepada sebuah aplikasi. Spesifikasi meletakkan keperluan tentang apa perlu dilakukan  dan tidak boleh dilakukan pemproses, akan tetapi aplikasi berada di luar skop spesifikasi. Pemproses (seperti yang digelar spesifikasi) lazim dipanggil XML parser (penghurai XML) dalam bahasa basahan.

Bahasa penanda dan kandungan Aksara yang terkandung dalam dokumen XML dibahagikan kepada bahasa penanda dan kandungan. Kedua-dua ini dapat dibezakan melalui peraturan sintaksis mudah. Secara amnya, rentetan aksara yang menjadi penanda bermula sama ada dengan kod aksara < dan akhir dengan >, ataupun bermula dengan dengan aksara & dan berakhir dengan ;.  Rentetan aksara yang bukan penanda dikira kandungan. Namun, dalam seksyen CDATA, pembatas <![CDATA[ dan ]]> diklasifikasikan sebagai penanda, sementara teks di antara aksara-aksar tersebut diklasifikasikan sebagai kandungan. Tambahan, ruang putih sebelum dan selepas unsur yang paling luar diklasifikasikan sebagai penanda.

Teg
Binaan penanda yang bermula dengan < dan akhir dengan >.  Terdapat tiga jenis teg:
Teg mula (start-tags); misalan: <section>
Teg akhir (end-tags); misalan: </section>
Teg unsur kosong (empty-element tags); misalan: <line-break />

Unsur Sebuah komponen logik dokumen bermula sama ada dengan teg mula dan berakhir dengan teg akhir sepadan ataupun mengandungi hanya teg unsur osong. Aksara di-antara teg-teg mula dan akhir, jika ada, merupakan kandungan unsur tersebut, dan boleh mengandungi penanda termasuklah unsur-unsur lain yang digelar unsur anak.  Sebuah contoh ialah <Greeting>Helo, dunia.</Greeting>. Sebuah lagi ialah <line-break />.

Atribut Binaan penanda yang terdiri daripada pasangan nama/nilai yang terkandung dalam teg mula atau teg unsur kosong. Dalam contoh di bawah, unsur img memiliki dua atribut, src dan alt:
<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/> Satu lagi contoh:
<step number="3">Sambungkan A kepada B.</step> di mana nama atribut ialah number dan nilai ialah 3.

Pengisytiharan XML Dokumen XML dapat bermula dengan mengisytiharkan maklumat tentang dokumen itu sendiri:
<?xml version="1.0" encoding="UTF-8" ?>

Aksara dan lepasan 
Dokumen XML terdiri sepeunuhnya daripada aksara set Unicode, dan melainkan beberapa bilangan kecil aksara kawalan, semua aksara yang didefinisikan oleh Unicode boleh hadir dalam dokumen XML. 
XML includes facilities for identifying the encoding of the Unicode characters that make up the document, and for expressing characters that, for one reason or another, cannot be used directly.

Aksara sah 

Titik kod Unicode dalam julat berikut sah dalam dokumen XML 1.0:

 U+0009, U+000A, U+000D: ini merupakan kod kawalan C0 yang diterima dalam XML 1.0;
 U+0020–U+D7FF, U+E000–U+FFFD: ini mengetepikan beberapa (bukan semua) kod bukan aksara dalam Basic Multilingual Plane (BMP) (kesemua pengganti, U+FFFE dan U+FFFF tidak dibenarkan);
 U+10000–U+10FFFF: ini merangkumi semua titik kod dalam satah tambahan, termasuk yang bukan aksara.

XML 1.1 melanjutkan set aksara yang dibenarkan: di atas serta aksara dalam julat U+0001–U+001F. Pada masa yang sama, ia mengehadkan penggunaan aksara kawalan C0 dan C1 selain daripada U+0009, U+000A, U+000D, dan U+0085 dengan memerlukan kod-kod tersebut ditulis dalam bentuk lepasan by requiring them to be written in escaped form (misalannya, U+0001 perlu ditulis sebagai &#x01; ataupun kod yang setara). Dalam kes aksara C1, hambatan ini merupakan keserasian kebelakang; ia diperkenalkan bagi membolehkan ralat pengekodan dikesan.

Titik kod U+0000 merupakan satu-satunya aksara yang tidak dibenarkan dalam apa jua dokumen XML 1.0 ataupun 1.1.

Mengesan pengekodan 

Set aksara Unicode dapat dikodkan ke dalam bait bagi penstoran atau penghantaran dalam beberapa cara yang digelar "pengekodan". Unicode sendiri mendefinisikan pengekodan yang merangkumi seluruh repertoir; yang terkenal termasuklah UTF-8 dan UTF-16.  Terdapat banyak lagi pengekodan teks yang mendahului Unicode, ASCII dan ISO/IEC 8859; dalam hampir semua kes, repertoir aksara kod-kod ini merupakan subset repertoir aksara Unicode.

XML membenarkan penggunaan apa jua pengekodan yang didefinisi Unicode, dan juga pengekodan yang hadir dalam Unicode. XML juga menyediakan mekanisme di mana pemproses XML dapat, secara pasti dan tanpa pengetahuan terdahulu, menentukan pengekodan mana yang digunakan. Pengekodan selain daripada UTF-8 dan UTF-16 tidak semestinya dikenali oleh setiap penghurai XML.

Lepasan 
XML menyediakan kemudahan lepasan yang membolehkan kemasukan aksara-aksara yang sukar dimasukkan secara langsung. Misalnya:

 Aksara-aksara "<" dan "&" merupakan penanda penting dan tidak mungkin hadir dalam kandungan di luar seksyen CDATA.
 Beberapa pengekodan aksara hanya menyokong subset Unicode: misalnya, adalah sah jika mengekod XML dalam ASCII, tetapi ASCII tidak mempunyai titik kod bagi aksara Unicode seperti é.
 Berkemungkinan sesuatu aksara tidak dapat ditaip dengan mesin penulis.
 Beberapa aksara memiliki glif yang tidak boleh dibezakan daripada aksara lain. Contoh termasuk:

 "non-breaking-space" (&#xa0;) " "
 dibandingkan dengan "space" (&#x20;) " "
 "Cyrillic Capital Letter A" (&#x410;) "А"
 dibandingkan dengan "Latin Capital Letter A" (&#x41;) "A"

Terdapat lima entiti pratakrif:
&lt; mewakili "<"
&gt; mewakili ">"
&amp; mewakili "&"
&apos; mewakili '
&quot; mewakili "
Kesemua aksara Unicode yang dibenarkan boleh diwakili dengan rujukan aksara angka. Sebagai contoh, lihat aksara Cina "中", yang kod angkanya dalam Unicode ialah perenambelasan (hexadecimal) 4E2D, atau perpuluhan (decimal) 20,013.  Pengguna yang empunya kekunci yang tidak boleh memasukkan aksara ini masih boleh memasukkannya ke dalam dokumen XML sama ada dengan menaip &#20013; atau &#x4e2d;.  Sama juga, rentetan "I <3 Jörg" dapat dikodkan bagi kemasukan ke dalam dokumen XML dengan mengguna "I &lt;3 J&#xF6;rg".

Penggunaan "&#0;" tidak dibenarkan oleh sebab aksara nol merupakan satu daripada aksara kawalan yang dikeluarkan daripada XML, mahupun rujukan aksara angka digunakan. Mekanisme pengekodan lain, seperti Base64 diperlukan bagi mewakilkan aksara-aksara sedemikian.

Ulasan 

Ulasan boleh hadir di mana-mana tempat dalam dokumen di luar penanda lain. Ulasan tidak boleh hadir sebelum pengisytiharan XML. Ulasan bermula dengan "<!--" dan berakhir dengan "-->".  Rentetan "--" (tanda sempang berganda) tidak dibenarkan dalam ulasan; ini bermaksud ulasan tidak boleh bersarang. Ampersand "&" tidak memiliki nilai bermakna dalam ulasan, jadi rujukan entiti dan aksara tidak diiktiraf, dan tidak ada jalan bagi mewakili aksara yang terkeluar dar set aksara pengekodan dokumen.

Contoh ulasan sah:
"<!-- kod tidak perlu <lepasan> & dalam ulasan -->"

Kegunaan antarabangsa 

XML 1.0 (Fifth Edition) dan XML 1.1 menyokong penggunaan secara langsung hampir kesemua aksara Unicode dalam nama-nam unsur, atribut, ulasan, data aksara, dan pemprosesan arahan (melainkan yang mempunyai makna simbol khas dalam XML sendiri, seperti tanda "kurang dari", yakni "<"). Berikut ialah dokumen XML yang purna bentuk (well-formed) yang mengandungi aksara tulisan Cina dan Siril:
<?xml version="1.0" encoding="UTF-8" ?>
<俄语>данные</俄语>

Purna bentuk dan pengendalian ralat 
Spesifikasi XML mendefiniskan dokumen XML sebagai teks yang purna bentuk, yakni ia menepati keperluan peruturan sintaksis yang terkandung dalam spesifikasi. Senarai tersebut agak panjang; beberapa perkara penting termasuk:
 Ia mengandungi aksara Unicode sah yang dikodkan dengan betul sahaja.
 Tiada aksara sintaksis khas seperti "<" dan "&" hadir kecuali apabila menjalankan fungsi membezakan penanda.
 Teg-teg mula, akhir dan unsur kosong yang mengehadkan unsur bersarang dengan betul dan tidak ada yang tidak hadir atau bertindih.
 Teg unsur sensitif huruf; teg-teg permulaaan dan akhir perlu sepadan. Nama-nama teg tidak boleh mengandungi aksara-aksara !"#$%&'()*+,/;<=>?@[\]^`{|}~, tidak boleh juga mengandungi aksara ruang, dan tidak boleh bermula dengan "-", ".", atau digit bernombor.
 Terdapat hanya satu unsur "akar" yang mengandungi semua unsur.

Justeru definisi dokumen XML mengetepikan teks yang melanggar perautuan purna bentuk. Pemproses XML yang menjumpai pelanggaran diwajibkan melapor ralat sedemikian dan berhenti memproses. An XML processor that encounters such a violation is required to report such errors and to cease normal processing. Polisi ini, yang kadang kalanya digelar sebagai drakonian, berlainan dengan perisian yang memproses HTML, yang direka untuk menjana keputusan yang berpatutan mahupun terdapat ralat penanda yang teruk. Polisi XML dalam hal ini pernah dikritik sebagai melanggar Hukum Postel yang menyatakan, "Bersikap konservatif dalam apa yang dihantar; bersifat liberal dalam apa yang diterima".

Nota

Lihat juga 

 HTML

Pautan luar 
 Laman sesawang rasmi XML W3C
  Ensiklokamus Teknologi Maklumat: XML secara ringkas
 Untuk melihat XML
 memformat data XML
Pengurai XML online

XML