Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/02/2011, 11:23
Avatar de zerokilled
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.