Question

il semble qu'une définition lâche de PCDATA et CDATA est que

  1. PCDATA est données de caractère, mais est à analyser.
  2. CDATA est données de caractère, et ne sont pas à analyser.

mais quelqu'un m'a dit que CDATA est effectivement analysé ou PCDATA est en fait pas ... il analysé est un peu une confusion. Est-ce que quelqu'un sait la vraie affaire est?

Mise à jour :. En fait, j'ajouté la définition de PCDATA sur Wikipedia ... alors ne prenez pas cette réponse trop au sérieux car c'est que ma compréhension approximative de celui-ci

Était-ce utile?

La solution

De WIKI:

PCDATA

  

Pour parler simplement, PCDATA signifie données de caractère analysable. Cela signifie que les caractères doivent être analysés par le XML, XHTML ou analyseur HTML. (Sera modifié &lt; à <, seront prises <p> signifie une étiquette de paragraphe, etc.). Comparez cela avec CDATA, où les personnages ne doivent pas être analysés par le XML, XHTML ou parseur HTML.

CDATA

  

Le terme CDATA, ce qui signifie des données de caractère, est utilisé à des fins distinctes, mais liées dans les langages de balisage SGML et XML. Le terme indique qu'une certaine partie du document est des données de caractère général, plutôt que des données non-caractère ou des données de caractère avec une structure plus spécifique, limitée.

Autres conseils

Les deux PCDATA et CDATA sont analysés. Ils sont tous deux caractère données.

Les deux ne doivent inclure des caractères valides. Par exemple, si votre document est l'encodage UTF-8, le contenu des sections CDATA doit être encore valide caractères UTF-8. Ainsi, les données binaires aléatoires empêcheront probablement le document d'être bien formé. Aussi les sections CDATA sont encore analysés, si seulement pour trouver la balise de section d'extrémité. Mais d'autres personnages comme balisage, comme <,> et & sont ignorés et transmis tel quel par l'analyseur.

OTOH dans PCDATA litéral

Alors oui, les sections CDATA sont en effet analysées. Je ne sais pas pourquoi on vous a dit que PCDATA ne sont pas analysées bien.

PCDATA - données de caractère Parsed

CDATA - (unparsed) Les données de caractères

http://www.w3schools.com/XML/xml_cdata.asp

  • PCDATA est un texte qui sera analysé par un analyseur. Mots-clés à l'intérieur du texte seront traités comme des balises et des entités seront élargies.
  • CDATA est un texte qui sera pas être interprétée par un interpréteur. Les balises contenues dans le texte pas être traités comme des balises et des entités ne seront pas élargi.

Par défaut, tout est PCDATA. Dans l'exemple suivant, en ignorant la racine, sera analysé, et cela aura pas de contenu, mais un enfant.

<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>

Quand nous voulons spécifier qu'un élément ne contient que du texte, et aucun élément enfant, nous utilisons le PCDATA mot-clé, parce que ce mot-clé indique que l'élément doit contenir des données de caractère analysable - qui est, tout texte à l'exception des caractères moins: que (<), supérieur à (>), esperluette (&), apostrophe ( ') et double guillemets ( ").

Dans l'exemple suivant, le bar est CDATA, et ne sont pas analysées, et a le contenu "content!".

<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>

Il existe plusieurs modèles de contenu en SGML. Le modèle de contenu #PCDATA dit qu'un élément peut contenir le texte brut. Le « analysable » une partie de cela signifie que balisage (y compris IPs, commentaires et directives SGML) en elle est analysée au lieu d'afficher sous forme de texte brut. Cela signifie également que les références d'entité sont remplacés.

Un autre type de modèle de contenu permettant contenu en clair est CDATA. En XML, le modèle de contenu de l'élément ne peut pas être implicitement mis à CDATA, mais en SGML, cela signifie que les références de balisage et de l'entité sont ignorés dans le contenu de l'élément. Dans les attributs de type CDATA Cependant, les références d'entité sont remplacés.

En XML #PCDATA est le seul modèle de contenu en texte brut. Vous l'utilisez si vous voulez du tout pour permettre le contenu du texte dans l'élément. Le modèle de contenu CDATA peut être utilisé explicitement par le balisage de bloc CDATA dans #PCDATA, mais le contenu de l'élément ne peut pas être défini comme CDATA par défaut.

Dans une DTD, le type d'un attribut qui contient du texte doit être CDATA. Le mot-clé dans CDATA une déclaration d'attribut a une signification différente de la section CDATA dans un document XML. Dans la section CDATA tous les caractères sont légaux (y compris <,>, &, » et « caractères) à l'exception du « ]]> » balise de fin.

#PCDATA ne convient pas pour le type d'un attribut. Il est utilisé pour le type de texte « feuille ».

#PCDATA est préfixé par un hachage (aussi connu comme un « hashtag » ou octothorp) simplement pour des raisons historiques.

Votre première définition est correcte.

PCDATA est analysé ce qui signifie que les entités sont développées et que le texte est traité comme balisage. CDATA ne sont pas analysées par un analyseur XML.

Si des éléments seulement ont été mis à CDATA par défaut dans le DTD XHTML, il permettrait d'économiser beaucoup de commandes manuelles laid ... Pourquoi les blocs de script contiennent d'autres éléments? S'il y a des éléments, ils sont traités par l'interpréteur JS dans les actions de manipulation DOM - dans ce cas, ils doivent encore être complètement ignorés par l'analyseur XML avant l'insertion de documents et le rendu. Je suppose qu'il peut avoir été conçu pour forcer l'utilisation des fichiers de ressources de script externe, qui est finalement une bonne chose.

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