Apa di XML berarti?

Saya sering menemukan hal aneh CDATA tag `XML file:

<![CDATA[some stuff]]>

Saya telah mengamati bahwa ini CDATA tag selalu datang di awal, dan kemudian diikuti oleh beberapa hal.

Tapi kadang-kadang hal ini digunakan, kadang-kadang tidak. Saya menganggap itu adalah untuk menandai bahwa barang adalah "data" yang akan dimasukkan setelah itu. Tapi apa jenis data adalah barang? Isn't apa-apa saya menulis dalam tag XML beberapa jenis data?

Larutan

CDATA singkatan Data Karakter dan itu berarti bahwa data di antara string ini termasuk data yang bisa diartikan sebagai markup XML, tapi tidak harus.

Perbedaan utama antara CDATA dan komentar adalah:

Ini berarti diberikan tiga cuplikan dari XML dari satu well-formed dokumen:




An example of escaped CENDs


]]>

]]>
Komentar (10)

Bagian CDATA adalah "bagian dari elemen konten yang ditandai untuk parser untuk menafsirkan karena hanya data karakter, tidak markup."

Sintaksis, berperilaku demikian pula komentar:



... tapi itu masih merupakan bagian dari dokumen tersebut:


 < " and &
    or write things like

    but my document is still well formed!
]]>

Mencoba menyimpan sebagai berikut .xhtml file (not .html) dan buka menggunakan FireFox (not Internet Explorer) untuk melihat perbedaan antara komentar dan bagian CDATA; komentar tidak't muncul ketika anda melihat dokumen di browser, sedangkan bagian CDATA akan:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>



CDATA Example



<h2>Using a Comment</h2>
<div id="commentExample">

</div>

<h2>Using a CDATA Section</h2>
<div id="cdataExample">
 & "
]]>
</div>



Sesuatu untuk mengambil catatan dengan bagian CDATA adalah bahwa mereka tidak memiliki encoding, sehingga ada's tidak ada cara untuk memasukkan string ]]> di dalamnya. Setiap karakter data yang berisi ]]> akan memiliki untuk - sejauh yang saya tahu - menjadi teks node sebagai gantinya. Demikian juga, dari DOM manipulasi perspektif anda dapat't membuat CDATA bagian yang meliputi ]]>:

var myEl = xmlDoc.getElementById("cdata-wrapper");
myEl.appendChild(xmlDoc.createCDATASection("This section cannot contain ]]>"));

Ini manipulasi DOM kode akan melempar pengecualian (di Firefox) atau mengakibatkan kurang terstruktur dokumen XML: http://jsfiddle.net/9NNHA/

Komentar (8)

Satu use case: xml anda termasuk program, seperti data (misalnya halaman web tutorial untuk Jawa). Dalam situasi itu data anda meliputi sebagian besar dari karakter yang meliputi '&' dan '<' tapi karakter-karakter aren't dimaksudkan untuk menjadi xml.

Bandingkan:


while (x < len && !done) {
    print( "Still working, &apos;zzz&apos;." );
    ++x;
    }

dengan

Terutama jika anda copy/paste kode ini dari sebuah file (atau seperti itu, dalam pre-processor), it's menyenangkan untuk hanya memiliki karakter yang anda inginkan di file xml, w/o membingungkan mereka dengan XML tag/atribut. Seperti @paary disebutkan, penggunaan umum lainnya termasuk bila anda're embedding Url yang mengandung ampersands. Akhirnya, bahkan jika data hanya berisi beberapa karakter khusus tetapi data sangat lama (teks bab, mengatakan), it's bagus tidak harus en/de-coding mereka beberapa entitas seperti anda mengedit file xml.

(Saya menduga semua perbandingan untuk komentar yang agak menyesatkan/membantu.)

Komentar (0)

Saya pernah menggunakan CDATA ketika saya elemen xml yang diperlukan untuk menyimpan kode HTML. Sesuatu seperti


   <p> my para </p> </div> 
  ]]>

Jadi CDATA berarti akan mengabaikan karakter yang sebaliknya bisa diartikan sebagai XML tag < dan > dll.

Komentar (1)

Data yang terkandung di dalamnya tidak akan diuraikan sebagai XML, dan karena itu tidak perlu XML yang valid atau dapat mengandung unsur-unsur yang mungkin muncul untuk menjadi XML tapi tidak.

Komentar (0)

Dari Wikipedia:

[Di] sebuah dokumen XML atau eksternal diurai badan, bagian CDATA adalah bagian dari elemen konten yang ditandai untuk parser untuk menafsirkan karena hanya data karakter, tidak markup.

http://en.wikipedia.org/wiki/CDATA

Dengan demikian: teks dalam CDATA dilihat oleh parser tetapi hanya sebagai karakter bukan sebagai node XML.

Komentar (0)

Sebagai contoh lain dari penggunaannya:

Jika anda memiliki RSS Feed (dokumen xml) dan ingin memasukkan beberapa dasar HTML encoding dalam tampilan deskripsi, anda dapat menggunakan CData untuk encode:


  Title of Feed Item
  /mylink/article1


      <a href="/mylink/article1"></a>
      Author Names
      <br/><em>Date</em>
      <br/>Paragraph of text describing the article to be displayed</p>
    ]]>

RSS Reader menarik dalam deskripsi dan merender HTML dalam CDATA.

Catatan - tidak semua tag HTML yang bekerja - saya pikir itu tergantung pada RSS reader yang anda gunakan.


Dan sebagai penjelasan mengapa contoh ini menggunakan CData (dan tidak sesuai pubData dan dc:creator tag): ini adalah tampilan website menggunakan RSS widget yang kita tidak memiliki real format control.

Hal ini memungkinkan kita untuk menentukan ketinggian dan posisi termasuk gambar, format nama penulis dan tanggal dengan benar, dan sebagainya, tanpa perlu untuk widget baru. Itu juga berarti saya dapat script ini dan tidak perlu menambahkan mereka dengan tangan.

Komentar (0)

CDATA singkatan Data Karakter. Anda dapat menggunakan ini untuk melarikan diri beberapa karakter yang jika tidak akan diperlakukan seperti biasa XML. Data dalam hal ini tidak akan diuraikan. Misalnya, jika anda ingin lulus URL yang berisi & di dalamnya, anda dapat menggunakan CDATA untuk melakukannya. Jika tidak, anda akan mendapatkan error seperti ini akan diurai seperti biasa XML.

Komentar (0)

It's digunakan untuk menampung data yang dinyatakan bisa dilihat sebagai xml karena mengandung karakter tertentu.

Dengan cara ini data di dalamnya akan ditampilkan, tetapi tidak ditafsirkan.

Komentar (0)

Lolos string yang tidak dapat dilewatkan ke XML seperti biasa:

Contoh:

String yang berisi "&" dalam hal itu.

Anda tidak dapat:

Dolce & Gabbana

Oleh karena itu, anda harus menggunakan CDATA:

Komentar (0)

Yang Cdata adalah data yang anda mungkin ingin lolos ke xml parser dan masih tidak diartikan sebagai aplikasi xml.

Katakan misalnya :- Anda memiliki xml yang telah merangkum pertanyaan/jawaban objek . Seperti lapangan terbuka dapat memiliki data yang tidak benar-benar jatuh di bawah data dasar tipe atau xml yang didefinisikan kustom jenis data. Seperti - ini Adalah sebuah tag yang benar untuk xml komentar <!Komentar--> ? .-- Anda mungkin memiliki persyaratan untuk lulus seperti itu tanpa ditafsirkan oleh xml parser seperti anak lain elemen. Di sini Cdata datang untuk menyelamatkan anda . Dengan menyatakan sebagai Cdata anda mengatakan parser don't memperlakukan data-data yang dibungkus seperti xml (meskipun itu mungkin terlihat seperti satu )

Komentar (0)

Biasanya digunakan untuk embedding data khusus, seperti gambar atau suara data dalam dokumen XML.

Komentar (1)