¿Qué significa en XML?

A menudo encuentro esta extraña etiqueta CDATA en archivos XML :

  

He observado que esta etiqueta CDATA siempre viene al principio, y luego sigue algunas cosas.

Pero a veces se usa, otras veces no. Supongo que es para señalar que some stuff son los “datos” que se insertarán después de eso. Pero, ¿qué tipo de datos son some stuff ? ¿No escribo algo en las tags XML algún tipo de datos?

CDATA significa Datos de caracteres y significa que los datos entre estas cadenas incluyen datos que podrían interpretarse como marcas XML, pero no deberían serlo.

Las principales diferencias entre CDATA y los comentarios son:

  • Como señala Richard , CDATA sigue siendo parte del documento, mientras que un comentario no lo es.
  • En CDATA no puede incluir la cadena ]]> ( CDEnd ), mientras que en un comentario no es válido .
  • Parámetro Las referencias de entidad no se reconocen dentro de los comentarios.

Esto significa que dados estos tres fragmentos de XML de un documento bien formado:

  

  

  

 An example of escaped CENDs   ]]>  ]]> 

Una sección CDATA es ” una sección del contenido del elemento que está marcada para que el analizador interprete solo los datos de caracteres, no el marcado ” .

Sintácticamente, se comporta de manera similar a un comentario:

    

… pero sigue siendo parte del documento:

   < " and & or write things like  but my document is still well formed! ]]>  

Intente guardar lo siguiente como un archivo .xhtml ( no .html ) y ábralo usando FireFox ( no Internet Explorer ) para ver la diferencia entre el comentario y la sección CDATA; el comentario no aparecerá cuando mires el documento en un navegador, mientras que la sección CDATA:

     CDATA Example   

Using a Comment

Using a CDATA Section

& " ]]>

Algo para tener en cuenta con las secciones de CDATA es que no tienen encoding, por lo que no hay forma de incluir la cadena ]]> en ellas. Cualquier dato de carácter que contenga ]]> tendrá que – hasta donde yo sé – ser un nodo de texto en su lugar. Del mismo modo, desde una perspectiva de manipulación DOM no puede crear una sección CDATA que incluya ]]> :

 var myEl = xmlDoc.getElementById("cdata-wrapper"); myEl.appendChild(xmlDoc.createCDATASection("This section cannot contain ]]>")); 

Este código de manipulación DOM emitirá una excepción (en Firefox) o dará como resultado un documento XML mal estructurado: http://jsfiddle.net/9NNHA/

Un gran caso de uso: su xml incluye un progtwig, como datos (por ejemplo, un tutorial de página web para Java). En esa situación, sus datos incluyen una gran cantidad de caracteres que incluyen ‘&’ y ‘<' pero esos caracteres no están destinados a ser xml.

Comparar:

  while (x < len && !done) { print( "Still working, 'zzz'." ); ++x; }  

con

  

Especialmente si está copiando / pegando este código de un archivo (o incluyéndolo, en un preprocesador), es bueno tener solo los caracteres que desea en su archivo xml, sin confundirlos con tags / atributos XML. Como se mencionó en @paary, otros usos comunes incluyen cuando está incorporando URL que contienen símbolos. Finalmente, incluso si los datos solo contienen unos pocos caracteres especiales pero los datos son muy largos (el texto de un capítulo, por ejemplo), es bueno no tener que codificar o encriptar esas pocas entidades mientras edita su archivo xml .

(Sospecho que todas las comparaciones con los comentarios son un poco engañosas / inútiles.)

Una vez tuve que usar CDATA cuando mi etiqueta xml necesitaba almacenar el código HTML. Algo como

   

my para

]]>

Entonces, CDATA significa que ignorará cualquier carácter que de otra manera podría interpretarse como una etiqueta XML como , etc.

Los datos contenidos en ellos no se analizarán como XML, y como tales no necesitan ser XML válidos o pueden contener elementos que pueden parecer XML pero no lo son.

De la Wikipedia:

[En] un documento XML o una entidad analizada externa, una sección CDATA es una sección del contenido del elemento que está marcada para que el analizador interprete solo los datos del carácter, no el marcado.

http://en.wikipedia.org/wiki/CDATA

Por lo tanto, el analizador ve el texto dentro de CDATA, pero solo como caracteres, no como nodos XML.

CDATA significa Datos de caracteres. Puede usar esto para escapar de algunos caracteres que, de lo contrario, se tratarán como XML normal. Los datos dentro de esto no serán analizados. Por ejemplo, si desea pasar una URL que contiene & en ella, puede usar CDATA para hacerlo. De lo contrario, obtendrá un error, ya que se analizará como XML normal.

Como otro ejemplo de su uso …

Si tiene una fuente RSS (documento xml) y desea incluir alguna encoding HTML básica en la pantalla de la descripción, puede usar CData para codificarla:

  Title of Feed Item https://stackoverflow.com/mylink/article1    Author Names 
Date
Paragraph of text describing the article to be displayed

]]>

El lector RSS extrae la descripción y representa el HTML dentro de CDATA.

Nota: no todas las tags HTML funcionan, creo que depende del lector de RSS que esté utilizando.


Y como explicación de por qué este ejemplo usa CData (y no las tags pubData y dc: creator apropiadas) … esto es para la visualización del sitio web usando un widget RSS para el cual no tenemos un control de formato real.

Esto nos permite especificar la altura y la posición de la imagen incluida, formatear los nombres de los autores y la fecha correctamente, y así sucesivamente, sin la necesidad de un nuevo widget. También significa que puedo escribir esto y no tener que agregarlos a mano.

Se usa para contener datos que, de lo contrario, podrían verse como xml porque contienen ciertos caracteres.

De esta forma, se mostrarán los datos, pero no se interpretarán.

Usualmente se usa para incrustar datos personalizados, como imágenes o datos de sonido dentro de un documento XML.

El Cdata es un dato que puede pasar a un analizador xml y aún no se interpreta como un xml.

Digamos por ejemplo: – Usted tiene un xml que tiene un objeto de pregunta / respuesta encapsulado. Dichos campos abiertos pueden contener cualquier dato que no corresponda estrictamente al tipo de datos básico o tipos de datos personalizados definidos xml. Me gusta: ¿es esta una etiqueta correcta para el comentario xml? .– Puede tener un requisito para pasarlo tal como está sin que el analizador xml lo interprete como otro elemento secundario. Aquí Cdata viene a tu rescate. Al declarar como Cdata le está diciendo al analizador, no trate los datos envueltos como un xml (aunque puede parecer uno)

Intereting Posts