CDATA signifie Character Data et cela signifie que les données entre ces chaînes incluent des données qui pourraient être interprétées comme du balisage XML, mais ne devraient pas l'être.
Les principales différences entre CDATA et commentaires sont les suivantes:
Cela signifie étant donné ces quatre extraits de code XML d'un document bien formé:
<!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>
]]
et le>
- voir cette réponse pour le comment et le pourquoi.if (a[b[c]]>10) { }
.Une section CDATA est " une section de contenu d'élément qui est marquée pour que l'analyseur interprète comme uniquement des données de caractères, pas de balisage. "
Syntaxiquement, il se comporte de manière similaire à un commentaire:
... mais cela fait toujours partie du document:
Essayez d'enregistrer ce qui suit en tant que
.xhtml
fichier ( pas.html
) et ouvrez-le à l'aide de FireFox ( pas Internet Explorer ) pour voir la différence entre le commentaire et la section CDATA; le commentaire n'apparaîtra pas lorsque vous regardez le document dans un navigateur, tandis que la section CDATA:Quelque chose à noter avec les sections CDATA est qu'elles n'ont pas d'encodage, donc il n'y a aucun moyen d'y inclure la chaîne
]]>
. Toutes les données de caractères qui contiennent]]>
devront - pour autant que je sache - être un nœud de texte à la place. De même, du point de vue de la manipulation DOM, vous ne pouvez pas créer une section CDATA qui comprend]]>
:Ce code de manipulation DOM va lever une exception (dans Firefox) ou entraîner un document XML mal structuré: http://jsfiddle.net/9NNHA/
la source
Un grand cas d'utilisation: votre xml inclut un programme, sous forme de données (par exemple un tutoriel de page Web pour Java). Dans cette situation, vos données incluent un gros morceau de caractères qui incluent «&» et «<», mais ces caractères ne sont pas censés être xml.
Comparer:
avec
Surtout si vous copiez / collez ce code à partir d'un fichier (ou que vous l'incluez dans un pré-processeur), il est agréable d'avoir simplement les caractères que vous voulez dans votre fichier xml, sans les confondre avec des balises / attributs XML. Comme mentionné @paary, d'autres utilisations courantes incluent lorsque vous incorporez des URL contenant des esperluettes. Enfin, même si les données ne contiennent que quelques caractères spéciaux mais que les données sont très très longues (le texte d'un chapitre, par exemple), il est agréable de ne pas avoir à coder / décoder ces quelques entités lorsque vous modifiez votre fichier xml .
(Je soupçonne que toutes les comparaisons avec les commentaires sont un peu trompeuses / inutiles.)
la source
J'ai dû utiliser CDATA lorsque mon élément xml avait besoin de stocker du code HTML. Quelque chose comme
CDATA signifie donc qu'il ignorera tout caractère qui pourrait autrement être interprété comme une balise XML comme <et> etc.
la source
Les données qui y sont contenues ne seront pas analysées en tant que XML et, en tant que telles, ne doivent pas nécessairement être du XML valide ou peuvent contenir des éléments qui peuvent sembler être du XML mais ne le sont pas.
la source
De Wikipédia:
Ainsi: le texte à l'intérieur de CDATA est vu par l'analyseur mais uniquement comme des caractères et non comme des nœuds XML.
la source
Comme autre exemple de son utilisation:
Si vous avez un flux RSS (document xml) et que vous souhaitez inclure un codage HTML de base dans l'affichage de la description, vous pouvez utiliser CData pour le coder:
Le lecteur RSS extrait la description et affiche le code HTML dans le CDATA.
Remarque - toutes les balises HTML ne fonctionnent pas - je pense que cela dépend du lecteur RSS que vous utilisez.
Et pour expliquer pourquoi cet exemple utilise CData (et non les balises pubData et dc: creator appropriées): c'est pour l'affichage du site Web en utilisant un widget RSS pour lequel nous n'avons aucun contrôle de formatage réel.
Cela nous permet de spécifier la hauteur et la position de l'image incluse, de formater correctement les noms d'auteur et la date, etc., sans avoir besoin d'un nouveau widget. Cela signifie également que je peux écrire ceci sans avoir à les ajouter à la main.
la source
CDATA est l'abréviation de Character Data. Vous pouvez l'utiliser pour échapper certains caractères qui autrement seraient traités comme du XML standard. Les données qu'il contient ne seront pas analysées. Par exemple, si vous souhaitez transmettre une URL qui la contient
&
, vous pouvez utiliser CDATA pour le faire. Sinon, vous obtiendrez une erreur car elle sera analysée en XML standard.la source
Il est utilisé pour contenir des données qui pourraient autrement être vues comme xml car il contient certains caractères.
De cette façon, les données à l'intérieur seront affichées, mais pas interprétées.
la source
Il échappe une chaîne qui ne peut pas être passée au XML comme d'habitude:
Exemple:
La chaîne contient "&".
Vous ne pouvez pas:
Par conséquent, vous devez utiliser CDATA:
la source
Généralement utilisé pour incorporer des données personnalisées, comme des images ou des données sonores dans un document XML.
la source
Le Cdata est une donnée que vous voudrez peut-être passer à un analyseur xml et toujours pas interprétée comme un xml.
Dites par exemple: - Vous avez un xml qui encapsule un objet question / réponse. Ces champs ouverts peuvent contenir des données qui ne relèvent pas strictement du type de données de base ou des types de données personnalisés définis par xml. Comme - Est-ce une balise correcte pour un commentaire xml? - Vous devrez peut-être le transmettre tel quel sans être interprété par l'analyseur xml comme un autre élément enfant. Ici, Cdata vient à votre secours. En déclarant en tant que Cdata, vous dites à l'analyseur de ne pas traiter les données enveloppées comme un xml (bien qu'il puisse en ressembler un)
la source
Notez que la
CDATA
construction n'est nécessaire que si vous placez du texte directement dans le fichier texte XML.Autrement dit, vous ne devez l'utiliser que
CDATA
si vous tapez à la main ou si vous créez directement le texte XML par programmation.Tout texte saisi à l'aide d'une API de processeur DOM ou de SimpleXML sera automatiquement échappé pour éviter d'exécuter une infraction aux règles de contenu XML.
la source