Ik vind vaak deze vreemde CDATA
tag in XML
bestanden:
<![CDATA[some stuff]]>
Ik heb gemerkt dat deze CDATA
tag altijd aan het begin komt, en dan gevolgd wordt door wat andere dingen.
Maar soms wordt hij wel gebruikt, soms niet. Ik neem aan dat het is om aan te geven dat sommig spul
de "data" is die daarna wordt ingevoegd. Maar wat voor soort gegevens zijn sommig spul
? Is niet alles wat ik in XML-tags schrijf een soort van data?
CDATA staat voor Character Data en betekent dat de gegevens tussen deze strings gegevens bevatten die als XML-markup geïnterpreteerd zouden kunnen worden, maar dat niet moeten zijn.
De belangrijkste verschillen tussen CDATA en commentaar zijn:
]]>
(CDEnd
) niet opnemen, terwijl in een commentaar --
ongeldig is.Dit betekent dat gezien deze drie fragmenten van XML uit één welgevormd document:
<!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>
Het wordt gebruikt om gegevens te bevatten die anders als xml zouden kunnen worden gezien omdat zij bepaalde tekens bevatten.
Op deze manier worden de gegevens binnenin wel weergegeven, maar niet geïnterpreteerd.