
Les javascripts et les feuilles de style internes aux pages xhtml posent problème dès qu'elle contiennent le caractère < ou le caractère &, ces caractères étant interprétés par le parseur xml.
Ainsi, si vous placez un caractère comme < dans un élément XML, en écrivant par exemple <balise>Si salaire < 1000</balise>, une erreur sera fénérée car le navigateur va interpréter ce caractère <comme le début d'un nouvel élément.
On peut éviter cela en remplacant le caractère < par <, ce qui donne <balise>Si salaire < 1000</balise>
Il y a 5 entités prédéfinies en XML:
< < plus petit que > > plus grand que & & esperluette ' ' apostrophe " " guillement
Les seuls caractères strictement illégaux en XML sont < et &. Les apostrophes, guillements et plus grand que sont légaux mais il est de bonne habitude de les remplacer aussi.
L'espace insécable est également reconnu.
Pour les scripts et les feuilles de style, un moyen de résoudre le problème est de placer ces éléments dans des fichiers externes.
La balise CDATA permet d'écrire du texte quelconque qui sera interpérté comme du HTML sans l'analyser en tant que XML.
Une section CDATA commence avec <![CDATA[ et se termine avec ]]>
Pour un javascript par exemple, on écrira
<script type="text/javascript"> //<![CDATA[ les instructions javascript //]]> </script>
ou autrement,
<script type="text/javascript"> /*<![CDATA[*/ les instructions javascript /*//]]>*/ </script>
Toujours bien mettre les balises CDATA en commentaire (// ou /* */) pour le très habituel cas ou le navigateur traite le document en tant que text/html et n'interprète pas les balises CDATA.
La deuxième forme permet d'écrire le tout sur une seule ligne, comme
<script type="text/javascript"> /*<![CDATA[*/ les instructions javascript /*//]]>*/ </script>
A l'exception de ]]>, on peut mettre ce que l'on veut dans une section CDATA, un code source par exemple, ou même des balises interdites en XHTML!
Ce qui suit s'applique également aux chaînes php entre guillemets.
\b Backspace - retour arrière d'un caractère \n Newline - Saut de ligne \f Form feed - Nouvelle page \t Tab - Tabulation \r Return - Retour chariot \\ Backslash - Le caractère backslash lui-même \' Single quote - Apostrophe \" Double quote - Guillemets \... N'importe quel caractère dont ... représente le code octal (3 chiffres) \x.. N'importe quel caractère dont .. représente le code hexadécimal (2 chiffres) \u.... N'importe quel caractère dont .... représente le code Unicode (4 chiffres hexa)
On peut donc encoder les entités comme suit:
\x3C < plus petit que \x3E > plus grand que \x26 & esperluette \x27 ' apostrophe \x22 " guillement