Συχνά βρίσκω αυτή την περίεργη ετικέτα "CDATA" σε αρχεία "XML":
<![CDATA[some stuff]]>
Έχω παρατηρήσει ότι αυτή η ετικέτα CDATA
έρχεται πάντα στην αρχή, και στη συνέχεια ακολουθείται από κάποια πράγματα.
Αλλά μερικές φορές χρησιμοποιείται, μερικές φορές όχι. Υποθέτω ότι είναι για να επισημάνει ότι κάποια πράγματα
είναι τα "δεδομένα" που θα εισαχθούν μετά από αυτό. Αλλά τι είδους δεδομένα είναι τα "κάποια πράγματα"; Δεν είναι οτιδήποτε γράφω σε ετικέτες XML κάποιο είδος δεδομένων;
Το CDATA σημαίνει Character Data και σημαίνει ότι τα δεδομένα μεταξύ αυτών των συμβολοσειρών περιλαμβάνουν δεδομένα που θα μπορούσαν να ερμηνευθούν ως σήμανση XML, αλλά δεν πρέπει να ερμηνευθούν.
Οι βασικές διαφορές μεταξύ των CDATA και των σχολίων είναι οι εξής:
]]>
(CDEnd
), ενώ σε ένα σχόλιο το `--`` είναι άκυρο.Αυτό σημαίνει ότι δεδομένου αυτών των τριών αποσπασμάτων XML από ένα καλά διαμορφωμένο έγγραφο:
<!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>
Χρησιμοποιείται για να περιέχει δεδομένα που διαφορετικά θα μπορούσαν να θεωρηθούν ως xml επειδή περιέχουν ορισμένους χαρακτήρες.
Με αυτόν τον τρόπο τα δεδομένα που βρίσκονται μέσα σε αυτά θα εμφανίζονται, αλλά δεν θα ερμηνεύονται.