- PCDATA es texto que será analizado por un analizador. Las etiquetas dentro del texto se tratarán como marcas y las entidades se expandirán.
- CDATA es texto que no ser analizado por un analizador. Las etiquetas dentro del texto serán no se tratarán como marcas y las entidades no se expandirán.
Por defecto, todo es PCDATA. En el siguiente ejemplo, se analizará la raíz, se analizará y no tendrá contenido, sino un elemento secundario.
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
Cuando queremos especificar que un elemento sólo contendrá el texto, y no hay elementos secundarios, que utilice la palabra clave PCDATA, porque esta palabra clave especifica que el elemento debe contener datos de carácter parsable - es decir, cualquier texto, salvo los caracteres menor que (<), mayor que (>), comercial (&), cita (') y comillas dobles (").
En el siguiente ejemplo, la barra es CDATA, y no se analiza y tiene el contenido "contenido".
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>
Hay varios modelos de contenido en SGML. El modelo de contenido #PCDATA dice que un elemento puede contener texto sin formato. La parte "analizada" significa que el marcado (incluidos los PI, los comentarios y las directivas SGML) se analiza en lugar de mostrarse como texto sin formato. También significa que las referencias de entidad son reemplazadas.
Otro tipo de modelo de contenido que permite contenido de texto sin formato es CDATA. En XML, el modelo de contenido del elemento no puede establecerse implícitamente en CDATA, pero en SGML, significa que las referencias de marcado y entidad se ignoran en el contenido del elemento. Sin embargo, en los atributos de tipo CDATA, las referencias de entidad son reemplazadas.
En XML, #PCDATA es el único modelo de contenido de texto sin formato. Lo usa si quiere permitir el contenido de texto en el elemento. El modelo de contenido CDATA se puede usar explícitamente a través del marcado de bloque CDATA en #PCDATA, pero el contenido del elemento no se puede definir como CDATA por defecto.
En una DTD, el tipo de atributo que contiene texto debe ser CDATA. La palabra clave CDATA en una declaración de atributo tiene un significado diferente al de la sección CDATA en un documento XML. En la sección CDATA, todos los caracteres son legales (incluidos <,>, &, 'y "caracteres), excepto la etiqueta"]]> "end.
#PCDATA no es apropiado para el tipo de atributo. Se usa para el tipo de texto de "hoja".
#PCDATA se antepone a un hashtag simplemente por razones históricas.
La confusión puede ser causada por el hecho de que CDATA puede ser analizado, pero por un analizador diferente. Por ejemplo, el intérprete Javascript analiza el contenido de un elemento 'script', que es CDATA en HTML. –