Foros del Web » Creando para Internet » HTML »

Validar html CDATA

Estas en el tema de Validar html CDATA en el foro de HTML en Foros del Web. Ayuda por favor Hay un error que no encuentro solución por más que busque Un ejemplo de lo que tengo puesto: <div align="center"><a href=\'http://www.ejemplo.es/product_info.php/producto76\'><img src="product_thumb.php?img=images/producto76.jpg&amp;w=133&amp;h=100" ...
  #1 (permalink)  
Antiguo 12/02/2011, 04:29
 
Fecha de Ingreso: julio-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
Validar html CDATA

Ayuda por favor

Hay un error que no encuentro solución por más que busque

Un ejemplo de lo que tengo puesto:

<div align="center"><a href=\'http://www.ejemplo.es/product_info.php/producto76\'><img src="product_thumb.php?img=images/producto76.jpg&amp;w=133&amp;h=100" width="133" height="100" border="0" alt="producto76" title="producto76"><br>producto76<br>23.60</a></div><br><br>';

Aquí me dice que el </a> y el </div> no deberían estar porque no se han abierto, cuando he revisado todo el código mil veces y están abiertos

También me dice error 128 en el 23.60 creo que por el . en vez de la coma, no lo sé la verdad

¿Puede ser algo del CDATA?

La función script es esta

<script type="text/javascript">
//<![CDATA[
/* merge server php and client javascript arrays */
var pausecontent_np=new Array();
<?php
$i = 0;
while ($pausecontent_np[$i]) {
echo "pausecontent_np[".$i."] = '".$pausecontent_np[$i]."';

";
$i++;
}
?>
//]]>
</script>

Y el resultado es este:

<script type="text/javascript">
//<![CDATA[
/* merge server php and client javascript arrays */
var pausecontent_np=new Array();
pausecontent_np[0] = '<div align="center"><a href=\'http://www.ejemplo.es/product_info.php/producto76\'><img src="product_thumb.php?img=images/producto76.jpg&amp;w=133&amp;h=100" width="133" height="100" border="0" alt="producto76" title="producto76"><br>producto76<br>23.60</a></div><br><br>';';

Un saludo y gracias

Última edición por GuNiTa; 12/02/2011 a las 04:39
  #2 (permalink)  
Antiguo 12/02/2011, 10:52
 
Fecha de Ingreso: julio-2009
Mensajes: 16
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Validar html CDATA

Cita:
Iniciado por GuNiTa Ver Mensaje
Ayuda por favor

Hay un error que no encuentro solución por más que busque

Un ejemplo de lo que tengo puesto:

<div align="center"><a href=\'http://www.ejemplo.es/product_info.php/producto76\'><img src="product_thumb.php?img=images/producto76.jpg&amp;w=133&amp;h=100" width="133" height="100" border="0" alt="producto76" title="producto76"><br>producto76<br>23.60</a></div><br><br>';

Aquí me dice que el </a> y el </div> no deberían estar porque no se han abierto, cuando he revisado todo el código mil veces y están abiertos

También me dice error 128 en el 23.60 creo que por el . en vez de la coma, no lo sé la verdad

¿Puede ser algo del CDATA?

La función script es esta

<script type="text/javascript">
//<![CDATA[
/* merge server php and client javascript arrays */
var pausecontent_np=new Array();
<?php
$i = 0;
while ($pausecontent_np[$i]) {
echo "pausecontent_np[".$i."] = '".$pausecontent_np[$i]."';

";
$i++;
}
?>
//]]>
</script>

Y el resultado es este:

<script type="text/javascript">
//<![CDATA[
/* merge server php and client javascript arrays */
var pausecontent_np=new Array();
pausecontent_np[0] = '<div align="center"><a href=\'http://www.ejemplo.es/product_info.php/producto76\'><img src="product_thumb.php?img=images/producto76.jpg&amp;w=133&amp;h=100" width="133" height="100" border="0" alt="producto76" title="producto76"><br>producto76<br>23.60</a></div><br><br>';';

Un saludo y gracias
ok he encontrado la solución

había que poner <\/a> <\/div>

Con Clean up Markup with HTML Tidy dentro de la pagina de validación de HTML http://validator.w3.org/ he solucionado el problema

Un saludo!
  #3 (permalink)  
Antiguo 12/02/2011, 11:23
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
Puntos: 1485
Respuesta: Validar html CDATA

buenas...

no estoy un 100% seguro de modo que comentare segun el corto analisis que lleve a cabo y la informacion que pude encontrar. la primera duda era si html tiene soporte para <![CDATA[ ... ]]>. la wikipedia cita lo siguiente, marcando lo mas importante en negrita:
Cita:
Iniciado por http://en.wikipedia.org/wiki/CDATA#Use_of_CDATA_in_program_output
CDATA sections in XHTML documents are liable to be parsed differently by web browsers if they render the document as HTML, since HTML parsers do not recognise the CDATA start and end markers, nor do they recognise HTML entity references such as &lt; within <script> tags. This can cause rendering problems in web browsers and can lead to cross-site scripting vulnerabilities if used to display data from untrusted sources, since the two kinds of parser will disagree on where the CDATA section ends.
la traduccion es el analizador html no reconoce los marcadores iniciales y finales CDATA, tampoco reconoce las entidades HTML tales como &lt; dentro de la etiqueta <script>. estimo que es cierto porque mientras hacia una prueba, el validador indicaba un error tal que no reconocia el final ]]>. ahora mismo no recuerdo como reproducirlo. por otro lado, segun el HTML DTD, el contenido de <script> es de tipo CDATA. lo que significa que deberia ser valido introducir ciertos caracteres especiales de la sintaxis de html. aun asi puedes encontrar error, un ejemplo es tu caso. a mi entender, se debe a que el validador logra encontrar sintaxis html dentro de <script>.

posibles soluciones... la mas recomendada es separar el script de html. es decir, llevas el script a un archivo *.js y lo cargas al documento con <script src='...'>. entiendo que en tu caso estas generando el codigo mediante php, pero hay soluciones para que php genere el codigo en un archivo externo y el navegador lo pueda interpretar como javascript. la otra solucion es romper con la sintaxis de html para que el validador no las encuentres. sin embargo, se requiere el cuidado de no alterarlo demasiado al punto que luego el navegador no pueda analizar el contenido html de los string. una solucion en este caso es escapar algun caracter de las etiquetas html, preferiblemente del cierre. por ejemplo, la barra diagonal (</a>), ya sea mediante la barra diagonal invertida (\) o el equivalente hexadecimal (0x2f).

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: Ninguno
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 13:43.