Foros del Web » Creando para Internet » HTML »

[SOLUCIONADO] Entendiendo CDATA

Estas en el tema de Entendiendo CDATA en el foro de HTML en Foros del Web. Hola Estoy intentando dominar este término y me encuentro con este artículo en la Wikipedia: http://en.wikipedia.org/wiki/CDATA Todo está claro salvo cuando habla del problema entre ...
  #1 (permalink)  
Antiguo 24/07/2014, 09:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Entendiendo CDATA

Hola

Estoy intentando dominar este término y me encuentro con este artículo en la Wikipedia:

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

Todo está claro salvo cuando habla del problema entre el parsing como html en lugar de xhtml.

Concretamente en el título: Use of CDATA in program output

Especifica que HMLT no interpreta este término y que puede haber problemas, así que para evitarlo se comentan los marcadores de CDATA.

Lo que no entiendo es si XHTML no entiene también el comentado quedando inservible.

Lo que creo es que ese comentado es propio de HTML y que XHTML no lo interpreta a modo de hack para HTML.

¿Estoy en lo cierto?

Gracias.
  #2 (permalink)  
Antiguo 26/07/2014, 09:30
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Entendiendo CDATA

estoy un poco oxidado en el tema, pero yo usaba CDATA para que los parsers no se enredaran en el caso de data con caracteres especiales, embeber codigo, etc.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 27/07/2014, 00:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Entendiendo CDATA

buenas...

@jumasol, el artículo explica que los documentos html no comprenden los CDATA Section. la razón es bien simple, los CDATA Section son parte de XML y solamente puede interpretarse correctamente si el navegador soporta lectura de XML y las aplicaciones derivadas de éste, por ejemplo XHTML. CDATA significa Character DATA y es la contraparte de PCDATA (Parsed Character DATA). su función es para designar un contenido que no debe ser intepretado de forma especial por el parser (user-agent). de modo que el contenido que ahí aparezca será tratado de forma literal. por ejemplo, los símbolos <, >, &, los cuales tienen un significado especial para el parser... básicamente son marcadores para delimitar elemento y entidades. con CDATA Section, esos símbolos se tratan de forma literal.

de hecho, en la definición del documento html (el DTD HTML), el CDATA existe para indicar que el contenido de un elemento o atributo no es parseado por el user-agent. sin embargo, el CDATA Section no existe en HTML. el ejemplo que muestra el artículo referente a incluirlo dentro de los script o estilos inline, es a modo de precaución cuando un documento XHTML es interpretdo como HTML. los marcadores CDATA Section, al no ser parte del lenguaje de scripting o de estilo, tienen que ser acompañados con un comentario para evitar que el motor de scripting o de estilo lo analice como código, y por ende que no produzca error.

en resumen, los CDATA Section solamente lo puedes usar en XML y sus aplicacones derivadas: XHTML, MathML, etc.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 27/07/2014 a las 09:26 Razón: ortografía
  #4 (permalink)  
Antiguo 29/07/2014, 02:50
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Entendiendo CDATA

Gracias por las respuestas.

No obstante, sigo sin entender bien el tema.

Código:
<script type="text/javascript">
//<![CDATA[
document.write("<");
//]]>
</script>
¿Quiere decir que <![CDATA[ realiza esa función para XHTML y las barras de comentado hacen lo propio con respecto a HTML?

Última edición por JUMASOL; 29/07/2014 a las 11:28
  #5 (permalink)  
Antiguo 30/07/2014, 08:35
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Entendiendo CDATA

parcialmente correcto. las barras de comentado es para que el intérprete no entienda la secuencia <![CDATA[ ]]> como código javascript. o sea, el intérprete javascript va ignorar esas dos líneas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 30/07/2014, 08:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Entendiendo CDATA

Entonces debo suponer que XHTML no interpreta de ninguna manera tales barras.
  #7 (permalink)  
Antiguo 30/07/2014, 11:37
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Entendiendo CDATA

veamoslo de otra forma, a ver si te ayuda a entender mejor. un browser (navegador) tiene varias mini aplicaciones, como prácticamente cualquier otro programa. entre las aplicaciones que tiene, están: el parser html, parser xhtml, intérprete javascript, parser css. cuando el navegador carga el documento, dependiendo de su tipo, se activa uno u otro parser. entonces, partiendo del código anterior...

¿qué sucede cuando el documento es html? recordando que en html no existe CDATA Section.
  • primero el parser html analiza el código html.
  • segundo, cuando llega a SCRIPT, el parser html considera como contenido literal lo que hay dentro de SCRIPT. es decir, lo trata tal cual lo lee, sin ningún significado especial. he aquí por qué:
    Código:
    <!-- DTD HTML 4.01 Strict -->
    <!ELEMENT SCRIPT - - %Script;          -- script statements -->
    <!ENTITY % Script "CDATA" -- script expression -->
    
    el HTML DTD dice que el contenido de SCRIPT es un CDATA. no confundir con CDATA Section (1).
  • el parser pasa el control al intérprete javascript. javascript lo que ve es esto:
    Código:
    //<![CDATA[
    document.write("<");
    //]]>
    
    si no tuviera los comentarios //, entonces javascript entendería que <![CDATA y ]]> son código javascript el cual debe interpretar.
  • resumiendo, en este caso el utilizar los símbolos especiales de html (<, >, &) no supone un problema porque el contenido de SCRIPT esta definido como CDATA en el DTD. además, html no interpreta CDATA Section. por lo que carece de sentido incluirlo si vas a servir el documento como HTML.

¿qué sucede cuando el documento es xhtml?
sucede básicamente lo mismo que en html. la diferencia es (además de ser el parser xhtm) cuando el parser xhtml lee el contenido de SCRIPT, toma en consideración aquellos caracteres que son especiales para el parser. o sea, donde quiera que encuentre los caracteres <, >, & lo intentará analizar como si fuera código xhtml porque el tipo de contenido definido en el DTD es PCDATA.
Código:
<!--- DTD XHTML 1.0 Strict -->
<!ELEMENT script (#PCDATA)>
en este caso, CDATA Section hay que utilizarlo si quieres validar correctamente el documento. también habría que incluir los comentarios ( // ) antes de <![CDATA[ y ]]> porque sino sucedería lo mismo que en html; el intérprete javascript leería dichas líneas como código javascript.


(1) CDATA y CDATA Section hacen la misma función. la diferencia es que con CDATA Section tu declaras un área como CDATA en el documento. CDATA es un nombre genérico que se utiliza mayormente en al descripción o definición de algo. por ejemplo, en un DTD.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 30/07/2014 a las 16:43 Razón: error bbcode

Etiquetas: ayuda-general
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.