Différence entre PCDATA et CDATA dans DTD

Quelle est la différence entre #PCDATA et #CDATA dans DTD ?

PCDATA – Données de caractère analysées

Les parsingurs XML parsingnt normalement tout le texte d’un document XML.

CDATA – Données de caractères (non analysées)

Le terme CDATA est utilisé pour les données texte qui ne doivent pas être analysées par l’parsingur XML.

Les caractères tels que “<" et "&" sont illégaux dans les éléments XML.

  • PCDATA est un texte qui sera analysé par un parsingur. Les balises à l’intérieur du texte seront traitées comme du balisage et les entités seront développées.
  • CDATA est un texte qui ne sera pas analysé par un parsingur. Les balises à l’intérieur du texte ne seront pas traitées comme du balisage et les entités ne seront pas développées.

Par défaut, tout est PCDATA. Dans l’exemple suivant, ignorer la racine, sera analysé, et il n’y aura pas de contenu, mais un enfant.

   content!  

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é spécifie que l’élément doit contenir des données de caractère analysables, c’est-à-dire tout texte sauf les caractères inférieurs à < ), supérieur à (>), esperluette (&), guillemet (‘) et guillemet double (“).

Dans l’exemple suivant, contient CDATA. Son contenu ne sera pas analysé et est donc content! .

   content!]]>  

Il existe plusieurs modèles de contenu dans SGML. Le modèle de contenu #PCDATA indique qu’un élément peut contenir du texte brut. La partie “analysée” signifie que le balisage (y compris les PI, les commentaires et les directives SGML) qu’il contient est analysé au lieu d’être affiché en tant que texte brut. Cela signifie également que les références d’entité sont remplacées.

Un autre type de modèle de contenu autorisant le contenu en texte brut est CDATA. En XML, le modèle de contenu de l’élément peut ne pas être implicitement défini sur CDATA, mais dans 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 atsortingbuts de type CDATA, cependant, les références d’entité 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 du texte dans l’élément. Le modèle de contenu CDATA peut être utilisé explicitement via le marquage de bloc CDATA dans #PCDATA, mais le contenu de l’élément peut ne pas être défini comme CDATA par défaut.

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

#PCDATA n’est pas approprié pour le type d’un atsortingbut. Il est utilisé pour le type de texte “feuille”.

#PCDATA est précédé d’un hash simplement pour des raisons historiques.

De là ( Google est votre ami ):

Dans une DTD, PCDATA et CDATA sont utilisés pour affirmer quelque chose sur le contenu autorisé des éléments et des atsortingbuts, respectivement. Dans le modèle de contenu d’un élément, #PCDATA indique que l’élément contient (peut contenir) un texte ancien. (Avec des exceptions comme indiqué ci-dessous.) Dans une déclaration d’atsortingbut, CDATA est une sorte de contrainte que vous pouvez appliquer aux valeurs autorisées de l’atsortingbut (autres sortes, toutes mutuellement exclusives, ID, IDREF et NMTOKEN). Un atsortingbut dont les valeurs admissibles sont CDATA peut (comme PCDATA dans un élément) contenir “un ancien texte”.

Un problème potentiellement très déroutant est qu’il y a un autre “CDATA”, également appelé sections marquées. Une section marquée est une partie du contenu de l’élément (#PCDATA) délimité par des chaînes spéciales: pour le fermer. Si vous vous rappelez que PCDATA est “données de caractères analysés”, une section CDATA est littéralement la même chose, sans le “analysé”. Les parsingurs transmettent le contenu d’une section marquée aux applications en aval sans interruption à chaque fois qu’ils rencontrent des caractères spéciaux tels que

Donc, vous pouvez en déduire que l’exception à la règle “tout ancien texte” est que PCDATA ne peut inclure aucun de ces caractères spéciaux non échapés, SAUF s’ils tombent dans le cadre d’une section marquée CDATA.

PCDATA – données de caractères analysées . Il parsing toutes les données d’un document XML.

Exemple:

  mom dad  

Ici, l’élément de la famille contient 2 éléments supplémentaires «mère» et «père» . Donc, il va plus loin pour obtenir le texte de la mère et du père pour donner la valeur de la famille en tant que «papa maman»

CDATA – Données non analysées. Ce sont les données qui ne doivent pas être analysées davantage dans un document XML.

  mom dad ]]>  

Ici, la valeur de la famille sera momdad .

La principale différence entre PCDATA et CDATA est

PCDATA – Fondamentalement utilisé pour ELEMENTS tout en

CDATA – Utilisé pour les atsortingbuts de XML, c.-à-d. ATTLIST

CDATA ( DONNÉES CARACTÉRISTIQUES ): Cela ressemble à un commentaire, mais cela fait partie du document. CDATA est une donnée, elle fait partie du document mais les données ne peuvent pas être analysées en XML.
Remarque: le commentaire XML omet lors de l’parsing d’un fichier XML, mais CDATA s’affiche tel quel.

PCDATA ( C aracter D DATA ): Par défaut, tout est PCDATA. PCDATA est une donnée, elle peut être analysée en XML.