xsl verifica tutorial sirven que partir para los example esquema definido dato cómo cumple crear con xml dtd

verifica - xml xsl dtd



Diferencia entre PCDATA y CDATA en DTD (6)

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


CDATA ( C character 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 pueden analizarse en XML.
Nota: El comentario XML se omite al analizar un XML pero CDATA se muestra como está.

PCDATA ( DATOS P ARÁMICOS P ARANTADOS): Por defecto, todo es PCDATA. PCDATA es un dato, se puede analizar en XML.


La principal diferencia entre PCDATA y CDATA es

PCDATA - Básicamente utilizado para ELEMENTS mientras

CDATA: utilizado para los atributos de XML, es decir, ATTLIST


PCDATA - Datos de caracteres analizados

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

CDATA - Datos de caracteres (no analizados)

El término CDATA se usa sobre datos de texto que el analizador XML no debe analizar.

Los caracteres como "<" y "&" son ilegales en elementos XML.


Desde aquí ( Google es tu amigo ):

En una DTD, PCDATA y CDATA se utilizan para afirmar algo sobre el contenido permitido de elementos y atributos, respectivamente. En el modelo de contenido de un elemento, #PCDATA dice que el elemento contiene (puede contener) "cualquier texto antiguo". (Con excepciones como se indica a continuación). En la declaración de un atributo, CDATA es un tipo de restricción que puede poner en los valores permitidos del atributo (otros tipos, todos mutuamente excluyentes, incluyen ID, IDREF y NMTOKEN). Un atributo cuyos valores permitidos son CDATA puede (como PCDATA en un elemento) contener "cualquier texto antiguo".

Un problema potencialmente muy confuso es que hay otro "CDATA", también conocido como secciones marcadas. Una sección marcada es una parte del contenido del elemento (#PCDATA) delimitada con cadenas especiales: para cerrarla. Si recuerda que PCDATA es "datos de caracteres analizados", una sección CDATA es literalmente la misma cosa, sin el "análisis sintáctico". Los parseadores transmiten el contenido de una sección marcada a las aplicaciones descendentes sin hipocresías cada vez que encuentran caracteres especiales como <y &. Esto es útil cuando está codificando un documento que contiene muchos de esos caracteres especiales (como scripts y fragmentos de código); es más fácil en la entrada de datos y más fácil de leer que la referencia de entidad correspondiente.

Por lo tanto, puede inferir que la excepción a la regla de "cualquier texto anterior" es que PCDATA no puede incluir ninguno de estos caracteres especiales no guardados, A MENOS QUE caigan dentro del alcance de una sección marcada con CDATA.


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

Ejemplo:

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

Aquí, el elemento familiar contiene 2 elementos más, "madre" y "padre" . Por lo tanto, analizar más para obtener el texto de la madre y el padre para dar el valor de la familia como "mamá papá"

CDATA: datos de datos sin analizar. Estos son los datos que no se deben analizar 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> .


  • 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 no se tratarán como marcas 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 elemento secundario.

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

Cuando queremos 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 analizables, es decir, cualquier texto excepto los caracteres menores que (< ), mayor que (>), signo & (&), comillas ('') y comillas dobles (").

En el siguiente ejemplo, <bar> contiene CDATA. ¡Su contenido no se analizará 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 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 una sección CDATA, todos los caracteres son legales (incluidos <,>, &, ''y "caracteres), excepto la etiqueta"]]> "end.

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

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