CDATA adalah singkatan dari Character Data dan itu berarti bahwa data di antara string ini termasuk data yang dapat diartikan sebagai markup XML, tetapi seharusnya tidak.
Perbedaan utama antara CDATA dan komentar adalah:
Ini berarti diberikan empat cuplikan XML ini dari satu dokumen yang dibuat dengan baik:
<!ENTITY MyParamEntity "Has been expanded">
<!--
Within this comment I can use ]]>
and other reserved characters like <
&, ', and ", but %MyParamEntity; will not be expanded
(if I retrieve the text of this node it will contain
%MyParamEntity; and not "Has been expanded")
and I can't place two dashes next to each other.
-->
<![CDATA[
Within this Character Data block I can
use double dashes as much as I want (along with <, &, ', and ")
*and* %MyParamEntity; will be expanded to the text
"Has been expanded" ... however, I can't use
the CEND sequence. If I need to use CEND I must escape one of the
brackets or the greater-than sign using concatenated CDATA sections.
]]>
<description>An example of escaped CENDs</description>
<!-- This text contains a CEND ]]> -->
<!-- In this first case we put the ]] at the end of the first CDATA block
and the > in the second CDATA block -->
<data><![CDATA[This text contains a CEND ]]]]><![CDATA[>]]></data>
<!-- In this second case we put a ] at the end of the first CDATA block
and the ]> in the second CDATA block -->
<alternative><![CDATA[This text contains a CEND ]]]><![CDATA[]>]]></alternative>
]]
dan>
- lihat jawaban ini untuk bagaimana dan mengapa.if (a[b[c]]>10) { }
.Bagian CDATA adalah " bagian konten elemen yang ditandai untuk diurai oleh pengurai sebagai hanya data karakter, bukan markup. "
Secara sintaksis, ini berperilaku mirip dengan komentar:
... tetapi masih merupakan bagian dari dokumen:
Coba simpan yang berikut ini sebagai
.xhtml
file ( bukan.html
) dan buka menggunakan FireFox ( bukan Internet Explorer ) untuk melihat perbedaan antara komentar dan bagian CDATA; komentar tidak akan muncul ketika Anda melihat dokumen di browser, sedangkan bagian CDATA akan:Sesuatu yang perlu diperhatikan dengan bagian CDATA adalah bahwa mereka tidak memiliki encoding, jadi tidak ada cara untuk memasukkan string
]]>
ke dalamnya. Setiap data karakter yang berisi]]>
harus - sejauh yang saya tahu - menjadi simpul teks. Demikian juga, dari perspektif manipulasi DOM Anda tidak dapat membuat bagian CDATA yang meliputi]]>
:Kode manipulasi DOM ini akan memberikan pengecualian (di Firefox) atau menghasilkan dokumen XML yang tidak terstruktur: http://jsfiddle.net/9NNHA/
sumber
Satu kasus penggunaan besar: xml Anda menyertakan program, sebagai data (mis. Tutorial halaman web untuk Java). Dalam situasi itu, data Anda menyertakan sejumlah besar karakter yang menyertakan '&' dan '<' tetapi karakter tersebut tidak dimaksudkan sebagai xml.
Membandingkan:
dengan
Terutama jika Anda menyalin / menempelkan kode ini dari file (atau memasukkannya, dalam pra-prosesor), senang memiliki karakter yang Anda inginkan dalam file xml Anda, tanpa membingungkan mereka dengan tag / atribut XML. Seperti @paary sebutkan, kegunaan umum lainnya termasuk ketika Anda menyematkan URL yang berisi ampersand. Akhirnya, bahkan jika data hanya berisi beberapa karakter khusus tetapi datanya sangat sangat panjang (teks dari sebuah bab, katakanlah), senang tidak harus meng-en-de-coding beberapa entitas tersebut saat Anda mengedit file xml Anda .
(Saya menduga semua perbandingan komentar agak menyesatkan / tidak membantu.)
sumber
Saya pernah harus menggunakan CDATA ketika elemen xml saya diperlukan untuk menyimpan kode HTML. Sesuatu seperti
Jadi CDATA berarti akan mengabaikan karakter apa pun yang dapat diartikan sebagai tag XML seperti <dan> dll.
sumber
Data yang terkandung di dalamnya tidak akan diuraikan sebagai XML, dan karena itu tidak perlu menjadi XML yang valid atau dapat mengandung elemen yang mungkin tampak XML tetapi tidak.
sumber
Dari Wikipedia:
Jadi: teks di dalam CDATA dilihat oleh parser tetapi hanya sebagai karakter bukan sebagai simpul XML.
sumber
Sebagai contoh lain penggunaannya:
Jika Anda memiliki Umpan RSS (dokumen xml) dan ingin memasukkan beberapa penyandian HTML dasar dalam tampilan deskripsi, Anda dapat menggunakan CData untuk menyandikannya:
Pembaca RSS menarik deskripsi dan merender HTML dalam CDATA.
Catatan - tidak semua tag HTML berfungsi - Saya pikir ini tergantung pada pembaca RSS yang Anda gunakan.
Dan sebagai penjelasan mengapa contoh ini menggunakan CData (dan bukan pubData dan dc: tag pembuat yang sesuai): ini untuk tampilan situs web menggunakan widget RSS yang kami tidak memiliki kontrol pemformatan nyata.
Ini memungkinkan kami untuk menentukan ketinggian dan posisi gambar yang disertakan, memformat nama dan tanggal penulis dengan benar, dan sebagainya, tanpa perlu widget baru. Ini juga berarti saya dapat membuat skrip ini dan tidak perlu menambahkannya dengan tangan.
sumber
CDATA adalah singkatan dari Character Data. Anda dapat menggunakan ini untuk menghindari beberapa karakter yang jika tidak akan diperlakukan sebagai XML biasa. Data di dalam ini tidak akan diuraikan. Misalnya, jika Anda ingin meneruskan URL yang berisi
&
di dalamnya, Anda dapat menggunakan CDATA untuk melakukannya. Jika tidak, Anda akan mendapatkan kesalahan karena akan diuraikan sebagai XML biasa.sumber
Ini digunakan untuk berisi data yang dapat dilihat sebagai xml karena mengandung karakter tertentu.
Dengan cara ini data di dalam akan ditampilkan, tetapi tidak diartikan.
sumber
Itu lolos dari string yang tidak dapat diteruskan ke XML seperti biasa:
Contoh:
String berisi "&" di dalamnya.
Kamu tidak bisa:
Karena itu, Anda harus menggunakan CDATA:
sumber
Biasanya digunakan untuk menyematkan data khusus, seperti gambar atau data suara dalam dokumen XML.
sumber
Cdata adalah data yang Anda mungkin ingin sampaikan ke parser xml dan masih tidak ditafsirkan sebagai xml.
Katakan misalnya: - Anda memiliki xml yang telah merangkum objek pertanyaan / jawaban. Bidang terbuka tersebut dapat memiliki data apa pun yang tidak secara ketat termasuk dalam tipe data dasar atau xml tipe data khusus yang ditentukan. Suka - Apakah ini tag yang benar untuk komentar xml? .-- Anda mungkin memiliki persyaratan untuk meneruskannya tanpa ditafsirkan oleh parser xml sebagai elemen anak lainnya. Di sini Cdata datang untuk menyelamatkan Anda. Dengan mendeklarasikan sebagai Cdata, Anda memberi tahu parser jangan memperlakukan data yang dibungkus sebagai xml (meskipun mungkin terlihat seperti salah satu)
sumber
Perhatikan bahwa
CDATA
konstruk hanya diperlukan jika menempatkan teks secara langsung dalam file teks XML.Artinya, Anda hanya perlu menggunakan
CDATA
jika pengetikan tangan atau secara langsung membuat teks XML.Teks apa pun yang dimasukkan menggunakan DOM prosesor API atau SimpleXML akan secara otomatis lolos untuk mencegah menjalankan pelanggaran aturan konten XML.
sumber