CDATA

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Delimitador de secciones en los lenguajes de marcado SGML y XML

El término CDATA, que significa datos de caracteres, se utiliza para fines distintos, pero relacionados, en los lenguajes de marcado SGML y XML. El término indica que una determinada parte del documento son datos de caracteres generales, en lugar de datos que no son caracteres o datos de caracteres con una estructura más específica y limitada.

Secciones CDATA en XML

En un documento XML o entidad externa, una sección CDATA es un elemento de contenido que está marcado para ser interpretado literalmente, como datos textuales, no como contenido marcado. Una sección CDATA es simplemente una sintaxis alternativa para expresar datos de caracteres; no hay diferencia semántica entre los datos de caracteres en una sección CDATA y los datos de caracteres en la sintaxis estándar donde, por ejemplo, "<" y "&" están representados por "&lt;" y "&amp;", respectivamente.

Sintaxis e interpretación

Una sección CDATA comienza con la siguiente secuencia:

c)! [CDATA]

y termina con la siguiente aparición de la secuencia:

]]

Todos los caracteres encerrados entre estas dos secuencias se interpretan como caracteres, no como marcas o referencias a entidades. Cada carácter se toma literalmente, la única excepción es la secuencia de caracteres ]]>. En:

"John. Smith■/sender título

el "remitente" inicial y final; Las etiquetas se interpretan como marcas. Sin embargo, el código:

[CDATA [cantador] John Smith hizo/sender título]]

es equivalente a:

<sender>John. Smith</ defensa>

Así, las "etiquetas" tendrá exactamente el mismo estatus que el "John Smith"; serán tratados como texto.

De manera similar, si la referencia de carácter numérico ð aparece en el contenido del elemento, se interpretará como el carácter Unicode único 00F0 (letra minúscula eth). Pero si aparece lo mismo en una sección CDATA, se analizará como seis caracteres: signo comercial, marca de almohadilla, dígito 2, dígito 4, dígito 0, punto y coma.

Usos de las secciones CDATA

Los nuevos autores de documentos XML a menudo malinterpretan el propósito de una sección CDATA y creen erróneamente que su propósito es "proteger" que los datos sean tratados como datos de caracteres ordinarios durante el procesamiento. Algunas API para trabajar con documentos XML ofrecen opciones para acceso independiente a secciones CDATA, pero dichas opciones existen más allá de los requisitos normales de los sistemas de procesamiento XML y aún no cambian el significado implícito de los datos. Los datos de caracteres son datos de caracteres, independientemente de si se expresan mediante una sección CDATA o un marcado normal. Las secciones CDATA son útiles para escribir código XML como datos de texto dentro de un documento XML. Por ejemplo, si uno desea componer un libro con XSL que explique el uso de una aplicación XML, el marcado XML que aparecerá en el libro se escribirá en el archivo fuente en una sección CDATA.

Anidación

Una sección CDATA no puede contener la cadena "]]>" y por lo tanto no es posible que una sección CDATA contenga secciones CDATA anidadas. El enfoque preferido para utilizar secciones CDATA para codificar texto que contiene la tríada "]]>" es utilizar múltiples secciones CDATA dividiendo cada aparición de la tríada justo antes de ">". Por ejemplo, para codificar "]]>" uno escribiría:

[CDATA[]]]]]]]

Esto significa que para codificar "]]>" en medio de una sección CDATA, reemplace todas las apariciones de "]]>" con lo siguiente:

]]][CDATA]

Esto detiene y reinicia efectivamente la sección CDATA.

Problemas con la codificación

En datos de texto, cualquier carácter Unicode que no esté disponible en la codificación declarada en el encabezado <?xml...?> se puede representar usando un &#nnn; referencia de carácter numérico. Pero el texto dentro de una sección CDATA está estrictamente limitado a los caracteres disponibles en la codificación.

Debido a esto, el uso de una sección CDATA mediante programación para citar datos que potencialmente podrían contener '&' o '<' Los caracteres pueden causar problemas cuando los datos contienen caracteres que no se pueden representar en la codificación. Dependiendo de la implementación del codificador, estos caracteres pueden perderse, convertirse en los caracteres de la referencia de caracteres &#nnn; o pueden provocar que la codificación falle. Pero no se mantendrán.

Otro problema es que un documento XML se puede transcodificar de una codificación a otra durante el transporte. Cuando el documento XML se convierte a un conjunto de caracteres más limitado, como ASCII, los caracteres que ya no se pueden representar se convierten en referencias de caracteres &#nnn; para una conversión sin pérdidas. Pero dentro de una sección CDATA, estos caracteres no se pueden representar en absoluto y deben eliminarse o convertirse a algún equivalente, alterando el contenido de la sección CDATA.

Uso de CDATA en la salida del programa

Las secciones CDATA en documentos XHTML pueden ser analizadas de manera diferente por los navegadores web si representan el documento como HTML, ya que los analizadores HTML no reconocen los marcadores de inicio y fin de CDATA, ni reconocen referencias de entidades HTML como &lt; dentro de las etiquetas <script>. Esto puede causar problemas de representación en los navegadores web y puede generar vulnerabilidades de secuencias de comandos entre sitios si se usa para mostrar datos de fuentes no confiables, ya que los dos tipos de analizadores no estarán de acuerdo sobre dónde termina la sección CDATA.

Dado que es útil poder utilizar signos de menor que (<) y ampersand (&) en los scripts de páginas web, y en menor medida estilos, sin tener que acordarse de escapar de ellos, es común usar marcadores CDATA alrededor del texto de los elementos <script> y <style> en línea en documentos XHTML. Pero para que el documento también pueda ser analizado por analizadores HTML, que no reconocen los marcadores CDATA, los marcadores CDATA suelen estar comentados, como en este ejemplo de JavaScript:

c)script Tipo="texto/javascript"[CDATA]documento.escribir()"Seguido");//]].script

o este ejemplo de CSS:

c)estilo Tipo="texto/css"- ¡Atención! [CDATA [*/cuerpo {} imagen de fondo: url()"marble.png?width=300 pulsaheight=300") } [*]].estilo

Esta técnica sólo es necesaria cuando se utilizan scripts y hojas de estilo en línea, y es específica del idioma. Las hojas de estilo CSS, por ejemplo, solo admiten el segundo estilo de comentarios (/* … */), pero CSS también necesita menos el < y & caracteres que JavaScript y, por lo tanto, menos necesidad de marcadores CDATA explícitos.

CDATA en DTD

Valor de atributo tipo CDATA

En los archivos de definición de tipo de documento (DTD) para SGML y XML, se puede designar un valor de atributo como de tipo CDATA: datos de caracteres arbitrarios. Dentro de un atributo de tipo CDATA, se permite el marcado de referencia de entidad y carácter y se procesará cuando se lea el documento.

Por ejemplo, si una DTD XML contiene

¡Seguido! ATTLIST Foo a CDATA #IMPLIED

significa que los elementos llamados foo pueden tener opcionalmente un atributo llamado "a" que es de tipo CDATA. En un documento XML que sea válido según esta DTD, podría aparecer un elemento como este:

* a="1 & 2 son < < > > > /

y un analizador XML interpretaría el "a" El valor del atributo es el dato del carácter "1 & 2 son < 3".

Entidad tipo CDATA

Una DTD SGML o XML también puede incluir declaraciones de entidad en las que se utiliza el token CDATA para indicar que la entidad consta de datos de caracteres. Los datos de caracteres pueden aparecer dentro de la propia declaración o pueden estar disponibles externamente, referenciados por un URI. En cualquier caso, el marcado de referencia de entidad de parámetro y referencia de carácter está permitido en la entidad y se procesará como tal cuando se lea.

■DISPLAY_NAME Attribute="Y"[CDATA [PFTEST0___COUNTER_6________________________________________________________]]]■/DISPLAY_NAMEIdentificado por: nombre=" val=" INTEGER nombre=" val=" LONG nombre=" val="/ contactos/SVLOBJECT

Contenido relacionado

Encuadernación tardía

En informática, el enlace tardío o enlace dinámico es un mecanismo de programación informática en el que el método que se invoca en un objeto, o la...

Alma-0

Alma-0 es un lenguaje de programación informática multiparadigma. Este lenguaje es una versión aumentada del lenguaje imperativo Modula-2 con...

Tabla de métodos virtuales

En programación informática, una tabla de métodos virtuales una tabla de funciones virtuales, una tabla de llamadas virtuales , tabla de despacho, vtable o...

ALGOL Y

ALGOL Y fue el nombre dado a un sucesor especulado del lenguaje de programación ALGOL 60 que incorporaba algunas características radicales que fueron...

ALGOL 68S

ALGOL 68S es un lenguaje de programación diseñado como un subconjunto de ALGOL 68, para permitir la compilación mediante un compilador de un solo paso. Fue...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save