Diferencia entre PCDATA y CDATA en DTD


¿Cuál es la diferencia entre #PCDATA y #CDATA en DTD?

 78
Author: Jakub Arnold, 2009-05-28

6 answers

PCDATA-Datos de Caracteres analizados

Los analizadores XML normalmente analizan todo el texto de un documento XML.

CDATA-Datos de caracteres (sin analizar)

El término CDATA se usa para los datos de texto que no deben ser analizados por el analizador XML.

Caracteres como "

 67
Author: Matthew Vines,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-03 20:15:59
  • PCDATA es texto que será analizado por un analizador. Etiquetas dentro del texto se tratará como marcado y las entidades se expandirán.
  • CDATA es un texto que no será analizado por un analizador. Las etiquetas dentro del texto no se tratará como marcado y las entidades no se expandirán.

Por defecto, todo es PCDATA. En el siguiente ejemplo, ignorando la raíz, <bar> se analizará, y no tendrá contenido, sino un hijo.

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

Cuando para especificar que un elemento solo contendrá texto, y no elementos secundarios, usamos la palabra clave PCDATA, porque esta palabra clave especifica que el elemento debe contener datos de caracteres parsables , es decir , cualquier texto excepto los caracteres menos que ( ), ampersand ( & ), quote(') y double quote (").

En el siguiente ejemplo, <bar> contiene CDATA. Su contenido no será analizado y por lo tanto es <test>content!</test>.

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

Hay varios modelos de contenido en SGML. El # PCDATA content model dice que un elemento puede contener texto sin formato. La parte "analizada" significa que el marcado (incluyendo PIs, comentarios y directivas SGML) en él se analiza en lugar de mostrarse como texto sin procesar. También significa que las referencias de entidad son reemplazadas.

Otro tipo de modelo de contenido que permite contenidos de texto sin formato es CDATA. En XML, el modelo de contenido de elementos no se puede establecer 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, se reemplazan las referencias de entidad.

En XML #PCDATA es el único modelo de contenido de texto sin formato. Se usa si se quiere permitir contenido de texto en el elemento. El modelo de contenido CDATA se puede usar explícitamente a través del marcado de bloques CDATA en # PCDATA, pero el contenido de los elementos 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 una sección CDATA, todos los caracteres son legales (incluidos los caracteres ,&,' y"), excepto la etiqueta"]]>".

#PCDATA no es apropiado para el tipo de atributo. Se utiliza para el tipo de texto "hoja".

#PCDATA es precedido por un hash simplemente por razones históricas.

 64
Author: Rose Perrone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-04 14:03:40

Desde aquí (Google es tu amigo):

En un DTD, PCDATA y CDATA se utilizan para afirmar algo sobre lo permitido contenido de elementos y atributos, respectivamente. En el contenido de un elemento modelo #PCDATA dice que el elemento contiene (puede contener) "cualquier texto antiguo." (Con las excepciones que se indican a continuación.) En declaración de un atributo, CDATA es un tipo de restricción que puedes poner los valores permitidos del atributo (otros tipos, todos mutuamente exclusivo, incluir ID, IDREF y NMTOKEN). Un atributo cuyos valores permitidos son CDATA can (como PCDATA en un elemento) contain " any old text."

Un problema potencialmente muy confuso es que hay otro "CDATA," también se conoce como secciones marcadas. Un la sección marcada es una porción del elemento (#PCDATA) contenido delimitado con cuerdas especiales: para cerrarlo. Si recuerde que PCDATA se " analiza datos de caracteres", una sección CDATA es literalmente el lo mismo, sin la "analizar."Los analizadores transmiten el contenido de una sección marcada a aguas abajo aplicaciones sin hipo cada hora en que se encuentran con personajes especiales como

Para que pueda inferir que la excepción a el " cualquier viejo texto " regla es que PCDATA no puede incluir ninguno de estos sin escaparse caracteres especiales, A MENOS que caigan dentro del alcance de un CDATA marcado apartado.

 10
Author: Oli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-27 23:23:29

PCDATA-datos de caracteres analizados . Analiza todos los datos de un documento xml.

Ejemplo:

<family>
    <mother>mom</mother>
    <father>dad</father>
</family>

Aquí, el elemento family contiene 2 más elementos de "madre" y "padre". Así que analiza aún más para obtener el texto de madre y padre para dar el valor de la familia como "mamá papá"

CDATA-datos caracterizados sin analizar. Estos son los datos que no debe analizarse más en un documento xml.

<family>
    <![CDATA[ 
       <mother>mom</mother>
       <father>dad</father>
    ]]>
</family>

Aquí, el valor de la familia será <mother>mom</mother><father>dad</father>.

 7
Author: winter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-26 19:28:50

La principal diferencia entre PCDATA y CDATA es

PCDATA-Se usa básicamente para ELEMENTOS mientras que

CDATA-Usado para Atributos de XML es decir ATTLIST

 3
Author: Rachana K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-02 13:43:43

CDATA ( C haracter DATA ): Es similar a un comentario, pero es parte del documento. es decir, CDATA es un dato, es parte del documento, pero los datos no se pueden analizar en XML.
Nota: El comentario XML omite mientras se analiza un XML, pero CDATA se muestra tal como está.

PCDATA (Parsed Character DATOS) :Por defecto, todo es PCDATA. PCDATA es un dato, puede ser analizado en XML.

 0
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-12 13:55:53