Apa perbedaan antara #PCDATA
dan #CDATA
di DTD ?
#PCDATA
dan CDATA
. Tidak ada PCDATA
kata kunci dan tidak ada #CDATA
.
Apa perbedaan antara #PCDATA
dan #CDATA
di DTD ?
#PCDATA
dan CDATA
. Tidak ada PCDATA
kata kunci dan tidak ada #CDATA
.
Jawaban:
PCDATA - Data Karakter yang Diurai
Pengurai XML biasanya mengurai semua teks dalam dokumen XML.
CDATA - Data Karakter (Tidak Terurai)
Istilah CDATA digunakan tentang data teks yang tidak boleh diurai oleh parser XML.
Karakter seperti "<" dan "&" ilegal dalam elemen XML.
PCDATA
adalah teks yang akan diurai oleh parser. Tag di dalam teks akan diperlakukan sebagai markup dan entitas akan diperluas.CDATA
adalah teks yang tidak akan diurai oleh parser. Tag di dalam teks
tidak akan diperlakukan sebagai markup dan entitas tidak akan diperluas.Secara default, semuanya PCDATA
. Dalam contoh berikut, mengabaikan root, <bar>
akan diurai, dan tidak akan memiliki konten, kecuali satu anak.
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
Ketika kami ingin menentukan bahwa sebuah elemen hanya akan berisi teks, dan tidak ada elemen turunan, kami menggunakan kata kunci PCDATA
, karena kata kunci ini menetapkan bahwa elemen harus berisi data karakter yang dapat diuraikan - yaitu, teks apa pun kecuali karakter kurang dari ( <
), lebih besar dari ( >
), ampersand ( &
), quote ( '
) dan double quote ( "
).
Dalam contoh berikutnya, <bar>
berisi CDATA
. Isinya tidak akan diurai dan karenanya <test>content!</test>
.
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>
Ada beberapa model konten di SGML. Model #PCDATA
konten mengatakan bahwa sebuah elemen mungkin berisi teks biasa. Bagian "parsed" artinya markup (termasuk PI, komentar, dan arahan SGML) di dalamnya diurai, bukan ditampilkan sebagai teks mentah. Ini juga berarti bahwa referensi entitas diganti.
Jenis model konten lain yang memungkinkan konten teks biasa adalah CDATA
. Dalam XML, model konten elemen mungkin tidak secara implisit diatur ke CDATA
, tetapi dalam SGML, itu berarti bahwa referensi markup dan entitas diabaikan dalam konten elemen. Namun dalam atribut CDATA
tipe, referensi entitas diganti.
Dalam XML, #PCDATA
adalah satu-satunya model konten teks biasa. Anda menggunakannya jika Anda sama sekali ingin mengizinkan konten teks dalam elemen. Model CDATA
konten dapat digunakan secara eksplisit melalui CDATA
markup blok di #PCDATA
, tetapi konten elemen tidak dapat didefinisikan sebagai CDATA
default.
Dalam DTD, jenis atribut yang berisi teks harus CDATA
. Kata CDATA
kunci dalam deklarasi atribut memiliki arti yang berbeda dengan CDATA
bagian dalam dokumen XML. Dalam CDATA
bagian semua karakter hukum (termasuk <
, >
, &
, '
dan "
karakter), kecuali ]]>
tag akhir.
#PCDATA
tidak sesuai untuk jenis atribut. Ini digunakan untuk jenis teks "daun".
#PCDATA
diawali dengan hash dalam model konten untuk membedakan kata kunci ini dari elemen bernama PCDATA
(yang akan sangat legal).
#
bukan hashtag. Hanya tag yang diawali dengan simbol ini yang merupakan hashtag. Simbol itu sendiri memiliki banyak nama , termasuk "tanda nomor", "tanda pagar" (kebanyakan Kanada & AS), atau hanya "tanda pagar" (karena itu dinamai 'tanda pagar').
#PCDATA
ada karena alasan historis. Itu ada karena dalam DTD, sebuah elemen juga bisa berisi elemen bernama PCDATA
, yang harus memungkinkan, dan seperti apa <!ELEMENT foo (PCDATA)>
.
PCDATA - data karakter yang diurai. Ini mem-parsing semua data dalam dokumen XML.
Contoh:
<family>
<mother>mom</mother>
<father>dad</father>
</family>
Di sini, <family>
elemen berisi 2 elemen lagi: <mother>
dan <father>
. Jadi mengurai lebih jauh untuk mendapatkan teks ibu dan ayah memberikan nilai teks keluarga sebagai "ibu ayah"
CDATA - Data karakter yang tidak diurai. Ini adalah data yang tidak boleh diurai lebih jauh dalam dokumen xml.
<family>
<![CDATA[
<mother>mom</mother>
<father>dad</father>
]]>
</family>
Di sini, nilai teks keluarga akan menjadi <mother>mom</mother><father>dad</father>
.
Dari sini ( Google adalah teman Anda ):
Dalam DTD, PCDATA dan CDATA digunakan untuk menegaskan sesuatu tentang konten yang diizinkan dari elemen dan atribut. Dalam model konten elemen, #PCDATA mengatakan bahwa elemen tersebut berisi (mungkin berisi) "teks lama apa pun". (Dengan pengecualian seperti yang disebutkan di bawah ini.) Dalam deklarasi atribut, CDATA adalah salah satu jenis batasan yang dapat Anda tempatkan pada nilai atribut yang diizinkan (jenis lainnya, semuanya eksklusif, termasuk ID, IDREF, dan NMTOKEN). Atribut dengan nilai yang diizinkan adalah CDATA dapat (seperti PCDATA dalam elemen) berisi "teks lama apa pun".
Masalah yang berpotensi sangat membingungkan adalah bahwa ada "CDATA" lain , juga disebut sebagai bagian yang ditandai. Bagian yang ditandai adalah bagian dari konten elemen (#PCDATA) yang dipisahkan dengan string khusus: untuk menutupnya. Jika Anda ingat bahwa PCDATA adalah "data karakter yang diuraikan", bagian CDATA secara harfiah adalah hal yang sama, tanpa "diuraikan". Parser mengirimkan konten bagian yang ditandai ke aplikasi hilir tanpa tersendat setiap kali mereka menemukan karakter khusus seperti <dan &. Ini berguna saat Anda membuat kode dokumen yang berisi banyak karakter khusus tersebut (seperti skrip dan fragmen kode); lebih mudah dalam entri data, dan lebih mudah dibaca, daripada referensi entitas yang sesuai.
Jadi Anda dapat menyimpulkan bahwa pengecualian untuk aturan "teks lama apa pun" adalah bahwa PCDATA tidak dapat menyertakan salah satu karakter khusus yang tidak dapat di-escape ini, KECUALI mereka termasuk dalam cakupan bagian bertanda CDATA.
CDATA ( C haracter DATA ): Ini mirip dengan komentar tetapi merupakan bagian dari dokumen. yaitu CDATA adalah data, itu adalah bagian dari dokumen tetapi data tidak dapat diuraikan dalam XML.
Catatan: Komentar XML dihilangkan saat mengurai XML tetapi CDATA ditampilkan apa adanya.
PCDATA ( P arsed C haracter DATA ): Secara default, semuanya PCDATA. PCDATA adalah data, dapat diurai dalam XML.