Nama-nama kata kunci yang digunakan dalam XML DTD adalah #PCDATAdan CDATA. Tidak ada PCDATAkata kunci dan tidak ada #CDATA.
mzjn
1
Selain jawaban yang diterima, Anda harus membaca stackoverflow.com/a/918462/2013911 karena ini menjelaskan perbedaan antara tipe atribut CDATA dan bagian bertanda <! [CDATA []]>.
Niklas Peter
Jawaban:
77
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.
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>.
Ada beberapa model konten di SGML. Model #PCDATAkonten 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 CDATAtipe, referensi entitas diganti.
Dalam XML, #PCDATAadalah satu-satunya model konten teks biasa. Anda menggunakannya jika Anda sama sekali ingin mengizinkan konten teks dalam elemen. Model CDATAkonten dapat digunakan secara eksplisit melalui CDATAmarkup blok di #PCDATA, tetapi konten elemen tidak dapat didefinisikan sebagai CDATAdefault.
Dalam DTD, jenis atribut yang berisi teks harus CDATA. Kata CDATAkunci dalam deklarasi atribut memiliki arti yang berbeda dengan CDATAbagian dalam dokumen XML. Dalam CDATAbagian semua karakter hukum (termasuk <, >, &, 'dan "karakter), kecuali ]]>tag akhir.
#PCDATAtidak sesuai untuk jenis atribut. Ini digunakan untuk jenis teks "daun".
#PCDATAdiawali dengan hash dalam model konten untuk membedakan kata kunci ini dari elemen bernama PCDATA(yang akan sangat legal).
Jawaban bagus, kecuali kalimat terakhir. #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').
6
#justhadtogetthatoffmychest
3
Saya tidak setuju bahwa # di depan #PCDATAada 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)>.
Mathias Müller
Kutipan dan kutip ganda legal dalam konten PCDATA. Dan ampersand mungkin muncul, tetapi (dalam XML) hanya sebagai pengenal entitas.
Toby Speight
13
PCDATA - data karakter yang diurai. Ini mem-parsing semua data dalam dokumen XML.
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.
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.
#PCDATA
danCDATA
. Tidak adaPCDATA
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.
sumber
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>
berisiCDATA
. 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 keCDATA
, tetapi dalam SGML, itu berarti bahwa referensi markup dan entitas diabaikan dalam konten elemen. Namun dalam atributCDATA
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. ModelCDATA
konten dapat digunakan secara eksplisit melaluiCDATA
markup blok di#PCDATA
, tetapi konten elemen tidak dapat didefinisikan sebagaiCDATA
default.Dalam DTD, jenis atribut yang berisi teks harus
CDATA
. KataCDATA
kunci dalam deklarasi atribut memiliki arti yang berbeda denganCDATA
bagian dalam dokumen XML. DalamCDATA
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 bernamaPCDATA
(yang akan sangat legal).sumber
#
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 bernamaPCDATA
, 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>
.sumber
Dari sini ( Google adalah teman Anda ):
sumber
Perbedaan utama antara PCDATA dan CDATA adalah
PCDATA - Pada dasarnya digunakan untuk ELEMEN sementara
CDATA - Digunakan untuk Atribut XML yaitu ATTLIST
sumber
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.
sumber