-
PCDATA
est un texte qui sera analysé par un analyseur syntaxique. Les balises à l'intérieur du texte seront traitées comme des balises et les entités seront développées.
-
CDATA
est un texte qui pas être analysé par un analyseur syntaxique. Les balises dans le texte seront pas seront traitées comme des balises et les entités ne seront pas développées.
Par défaut, tout est PCDATA
. Dans l'exemple suivant, on ignore la racine, <bar>
sera analysé, et il n'aura pas de contenu, mais un enfant.
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
Lorsque nous voulons spécifier qu'un élément ne contiendra que du texte, et aucun élément enfant, nous utilisons le mot-clé PCDATA
car ce mot-clé indique que l'élément doit contenir des données de caractères analysables, c'est-à-dire tout texte à l'exception des caractères moins que ( <
), plus grand que ( >
) , esperluette ( &
), quote( '
) et les guillemets doubles ( "
).
Dans l'exemple suivant, <bar>
contient CDATA
. Son contenu ne sera pas analysé et sera donc <test>content!</test>
.
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>
Il existe plusieurs modèles de contenu en SGML. Le site #PCDATA
Le modèle de contenu indique qu'un élément peut contenir du texte brut. La partie "analysée" signifie que le balisage (y compris les IP, les commentaires et les directives SGML) qu'il contient est analysé au lieu d'être affiché sous forme de texte brut. Cela signifie également que les références aux entités sont remplacées.
Un autre type de modèle de contenu permettant des contenus en texte brut est CDATA
. Dans le XML, le modèle de contenu de l'élément ne peut pas être implicitement fixé à CDATA
mais en SGML, cela signifie que les références aux balises et aux entités sont ignorées dans le contenu de l'élément. Dans les attributs de CDATA
Toutefois, les références aux entités sont remplacées.
En XML, #PCDATA
est le seul modèle de contenu en texte brut. Vous l'utilisez si vous souhaitez autoriser le contenu textuel de l'élément. Le site CDATA
peut être utilisé explicitement par le biais de l'option CDATA
balisage du bloc dans #PCDATA
mais le contenu des éléments peut ne 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 site CDATA
dans une déclaration d'attribut a une signification différente de celle du mot-clé CDATA
dans un document XML. Dans un CDATA
section tous les caractères sont légaux (y compris <
, >
, &
, '
et "
), à l'exception des ]]>
étiquette de fin.
#PCDATA
n'est pas approprié pour le type d'un attribut. Il est utilisé pour le type de texte "feuille".
#PCDATA
est précédé d'un dièse dans le modèle de contenu pour distinguer ce mot-clé d'un élément nommé PCDATA
(ce qui serait parfaitement légal).
1 votes
Duplicata possible de qu'est-ce que le PCDATA et le CDATA ?
1 votes
Les noms des mots-clés utilisés dans les DTD XML sont les suivants
#PCDATA
etCDATA
. Il n'y a pas dePCDATA
et pas de#CDATA
.1 votes
En plus de la réponse acceptée, vous devez lire stackoverflow.com/a/918462/2013911 car il explique la différence entre le type d'attribut CDATA et les sections marquées < ![CDATA[]]>.