Une section CDATA est "une section de l'élément de contenu qui est marqué pour l'analyseur à interpréter en tant que seul personnage de données, pas de balisage."
Du point de vue syntaxique, il se comporte de façon similaire à un commentaire:
<exampleOfAComment>
<!--
Since this is a comment
I can use all sorts of reserved characters
like > < " and &
or write things like
<foo></bar>
but my document is still well-formed!
-->
</exampleOfAComment>
... mais il est encore une partie du document:
<exampleOfACDATA>
<![CDATA[
Since this is a CDATA section
I can use all sorts of reserved characters
like > < " and &
or write things like
<foo></bar>
but my document is still well formed!
]]>
</exampleOfACDATA>
Essayez d'enregistrer l' .xhtml
le fichier (pas .html
) et l'ouvrir avec FireFox (pas Internet Explorer) pour voir la différence entre le commentaire et la section CDATA; le commentaire ne s'affiche pas lorsque vous regardez le document dans un navigateur, tandis que la section CDATA:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >
<head>
<title>CDATA Example</title>
</head>
<body>
<h2>Using a Comment</h2>
<div id="commentExample">
<!--
You won't see this in the document
and can use reserved characters like
< > & "
-->
</div>
<h2>Using a CDATA Section</h2>
<div id="cdataExample">
<![CDATA[
You will see this in the document
and can use reserved characters like
< > & "
]]>
</div>
</body>
</html>
Quelque chose à prendre note de avec des sections CDATA est qu'ils n'ont pas l'encodage, donc il n'y a aucun moyen d'inclure la chaîne ]]>
. Toutes les données de caractères qui contient ]]>
devront - autant que je sache - être un nœud de texte à la place. De même, à partir d'une manipulation du DOM point de vue, vous ne pouvez pas créer une section CDATA, qui inclut ]]>
:
var myEl = xmlDoc.getElementById("cdata-wrapper");
myEl.appendChild(xmlDoc.createCDATASection("This section cannot contain ]]>"));
Cette manipulation du DOM code de jeter une exception (dans Firefox) ou le résultat dans un mal structuré document XML: http://jsfiddle.net/9NNHA/