Question

Lors de la création XML Je me demande pourquoi les blocs CDATA sont des utilisations plutôt que de simplement échapper aux données. Y at-il quelque chose a permis dans un bloc CDATA qui ne peut être échappé et placé dans une balise régulière?

<node><![CDATA[ ...something... ]]></node>

au lieu de

<node>...something...</node>

Bien entendu, vous devrez échapper aux données dans les deux cas:

function xmlspecialchars($text)
{
    return str_replace('&#039;', '&apos;', htmlspecialchars($text, ENT_QUOTES, 'utf-8'));
}

De la spec il semble que CDATA était juste une solution posible quand vous pas la possibilité d'échapper aux données - mais vous faites confiance encore. Par exemple, un flux RSS de votre blog (qui, pour une raison ou une autre ne peut échapper à des entités).

Était-ce utile?

La solution

CDATA est juste la manière standard de garder le texte original est, ce qui signifie que quelle application traite le XML ne devrait pas avoir besoin de prendre une action explicite à unescape.

Vous obtenez que généralement avec JavaScript intégré dans XHTML, lorsque vous utilisez des symboles réservés:

<script type="text/javascript">
//<![CDATA[
    var test = "<This is a string with reserved characters>";

    if (1 > 0) {
        alert(test);
    }
//]]>
</script>

Si vous aviez if (1 &gt; 0) à la place, il faudrait Unescape explicitement (ce qui ne fonctionne pas). Il est aussi beaucoup plus facile à lire comme ça.

Autres conseils

Il est d'abord et avant tout fonction de la lisibilité. XML et SGML avant qu'il a été initialement conçu pour être lisible par l'homme - croyez-le ou non: -))

En second lieu, pour un bon analyseur, il est une caractéristique de perf. Le]]> fin est assuré d'être le bloc réelle fin, mais à part cela, il est un blob.

Par l'analyseur de livre doit aussi garder l'info / attrib sur une représentation de nœud à suivre qu'il a explicitement CDATA et ne jamais toucher un seul caractère dans ce.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top