CDATA
Le terme CDATA, signifie character data, dans des langages par balisages SGML et XML où il est utilisé à des fins distinctes mais liées, pour délimiter des sections (ou zones) de texte sans balisage et sans référence. Le terme délimite une partie de document contenant des caractères quelconques du jeu de caractère utilisé, plutôt que des données de "non-character" dont la structure est spécifiquement définie.
Sections CDATA en XML
Dans un document XML ou une entité externe, une section CDATA est un morceau de contenu qui doit être interprété tel quel, en tant que donnée textuelle, et non comme du balisage[1]. Une section CDATA est une autre syntaxe d'expression des données de caractères, pour exprimer la même sémantique, par exemple, "<" et "&" sont représentés par "<" et "&", respectivement.
Syntaxe et interprétation
Une section CDATA commence avec la séquence suivante:
<![CDATA[
et se termine avec l'occurrence:
]]>
Toutes les données présentes entre ces deux séquence sont interprétées comme des caractères, et non pas des références d'entité ou de balisage. Chaque caractère porte sa propre valeur, à la seule exception étant la séquence des deux crochets fermants ]]>. En:
<sender>Jean Dupont</sender>
les balises de début et fin de "sender" sont interprétées comme une balise. Alors que:
<![CDATA[<sender>Jean Dupont</sender>]]>
est équivalent à:
<sender>Jean Dupont</sender>
Ainsi, ce qui ressemble à une balise sera considéré comme "Jean Dupont"; comme du texte.
Similairement, dans la référence de caractère numérique (en anglais: numeric character reference) ð apparaissant dans un contenu, est simplement interprété en tant que caractère Unicode 00F0[2] qui représente la lettre minuscule (small letter en:eth). La même séquence dans une section CDATA, sera considéré comme six caractères distincts: ampersand, dièse, chiffre 2, chiffre 4, chiffre 0, point-virgule.
Utilisation des sections
Les nouveaux auteurs de documents XML peuvent se méprendre le but de section CDATA, croyant erronément que le but serait de "protéger" les données d'un traitement en tant que caractère ordinaire durant le traitement. Certaines APIs pour travailler avec des documents XML offrent des options pour un accès "indépendant" aux (ou plutôt discriminant des) sections CDATA, mais ces options sont en dehors (au dessus et au-delà) des exigences normale du traitement du XML, et ne change en rien la signification implicite du texte. Des caractères sont des caractères, qu'il soient exprimés dans une section CDATA ou en dehors. Les sections CDATA sont utiles à l'écriture de code XML en tant que texte à l'intérieur d'un document XML. Par exemple, pour écrire un livre en XSL expliquant le fonctionnement de données XML, le balisage XML devant apparaître dans le livre pourra être dans une section CDATA, car il ne fait pas partie du balisage XSL, mais des caractères à présenter au lecteur du livre..
Imbrication
Une section CDATA ne peut pas contenir la chaîne "]]>" ce qui ne permet pas à une section CDATA de contenir des sections CDATA imbriquées. Une approche courante pour coder le triplet de caractères "]]>" dans une section CDATA est d'utiliser plusieurs sections CDATA en découpant chaque occurrence du triplet juste avant la caractère ">". Par exemple le triplet "]]>" peut s'écrire:
<![CDATA[]]]]><![CDATA[>]]>
Ceci signifie que pour encoder le triplet "]]>" au milieu d'une section CDATA, chaque occurrence du triplet est remplacée par:
]]]]><