web-dev-qa-db-fra.com

Qu'est-ce que CDATA en HTML?

Quelle est l'utilisation de CDATA dans les balises JavaScript et HTML?

<script type="text/javascript"> 
// <![CDATA[

// ]]>
</script> 
161
SexyMF

Tout le texte d'un document XML sera analysé par l'analyseur.

Mais le texte à l'intérieur d'une section CDATA sera ignoré par l'analyseur.

CDATA - Données de caractère (non analysées)

Le terme CDATA est utilisé pour les données de texte qui ne doivent pas être analysées par l'analyseur XML.

Les caractères tels que "<" et "&" sont illégaux dans les éléments XML.

"<" générera une erreur car l'analyseur l'interprète comme le début d'un nouvel élément.

"&" générera une erreur car l'analyseur l'interprète comme le début d'une entité de caractère.

Certains textes, tels que le code JavaScript, contiennent beaucoup de caractères "<" ou "&". Pour éviter les erreurs, le code de script peut être défini en tant que CDATA.

Tout ce qui se trouve dans une section CDATA est ignoré par l'analyseur.

Une section CDATA commence par "<![CDATA[" et se termine par "]]>"

Utilisation de CDATA dans la sortie du programme

Les sections CDATA dans les documents XHTML sont susceptibles d’être analysées différemment par les navigateurs Web s’ils rendent le document au format HTML, car les analyseurs HTML ne reconnaissent pas les marqueurs de début et de fin de CDATA, ni les références d’entités HTML telles que &lt; au sein de. <script> balises. Cela peut entraîner des problèmes de rendu dans les navigateurs Web et conduire à des vulnérabilités de script entre sites s’il est utilisé pour afficher des données provenant de sources non fiables, car les deux types d’analyseurs ne seront pas d’accord sur le point de fin de la section CDATA.

n bref tutoriel sur SGML .

Voir aussi le entrée Wikipedia sur CDATA .

119
Ahsan Rathod

CDATA n'a aucune signification en HTML.

CDATA est une construction XML qui définit le contenu d'une balise normalement #PCDATA - données de caractère analysées, à prendre à la place de #CDATA, c'est-à-dire des données de caractère non analysées. Il est uniquement pertinent et valide en XHTML.

Il est utilisé dans les balises script pour éviter d'analyser < et &. En HTML, cela n'est pas nécessaire, car en HTML, script est déjà #CDATA.

83
Delan Azabani

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

Puisqu'il est utile de pouvoir utiliser des signes moins que <() et des esperluettes (&) dans les scripts de page Web et, dans une moindre mesure, les styles, sans avoir à se rappeler de les échapper, il est courant d'utiliser des marqueurs CDATA autour du texte. texte des éléments en ligne et des éléments dans les documents XHTML. Mais pour que le document puisse également être analysé par des analyseurs HTML, qui ne reconnaissent pas les marqueurs CDATA, les marqueurs CDATA sont généralement commentés, comme dans cet exemple JavaScript:

<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
16
user823959

Un moyen d'écrire un sous-ensemble commun de HTML et XHTML , dans l'espoir d'une plus grande portabilité.

En HTML, <script> sa magie échappe à tout jusqu'à ce que </script> apparaisse.

Pour que vous puissiez écrire:

<script>x = '<br/>';

et <br/> ne sera pas considéré comme une balise.

C'est pourquoi des chaînes telles que:

x = '</scripts>'

doit être échappé comme:

x = '</scri' + 'pts>'

Voir: Pourquoi diviser la balise <script> lors de son écriture avec document.write ()?

Mais XML (et donc XHTML, qui est un "sous-ensemble" de XML, contrairement à HTML ), n’a pas cette magie: <br/> serait considéré comme une balise.

<![CDATA[ est le moyen XHTML de dire:

ne pas analyser les balises avant le prochain ]]>, tout considérer comme une chaîne

Le // est ajouté pour que le CDATA fonctionne correctement en HTML.

En HTML <![CDATA[ n'est pas une magie, il serait donc géré par JavaScript. Donc, // est utilisé pour commenter.

Le XHTML voit aussi le //, mais l'observera comme une ligne de commentaire vide qui ne pose pas de problème:

//

Cela dit:

  • les navigateurs compatibles doivent reconnaître si le document est au format HTML ou XHTML à partir du doctype initial <!DOCTYPE html> vs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • les sites Web compatibles peuvent s’appuyer sur des navigateurs compatibles et coordonner le doctype avec une seule syntaxe valide script

Mais cela viole la règle d'or d'Internet:

ne faites pas confiance à des tiers, sinon votre produit se cassera

CDATA est obsolète .

Notez que les sections CDATA ne doivent pas être utilisées dans HTML; ils ne fonctionnent qu'en XML.

Donc, ne l'utilisez pas en HTML 5.

https://developer.mozilla.org/en-US/docs/Web/API/CDATASection#Specifications

Screenshot from MDN

7
Daniel De León

CDATA est une séquence de caractères du jeu de caractères du document et peut inclure des entités de caractères. Les agents utilisateurs doivent interpréter les valeurs d'attribut comme suit: remplacer les entités de caractères par des caractères,

Ignorer les sauts de ligne,

Remplacez chaque retour ou onglet par un seul espace.

4
Tushar Ahirrao