JUMASOL:
Lo de @zerokilled está bastante claro, pero me explayo con un ejemplo para que lo visualices mejor.
No se trata de si la script está dentor o fuera del body,
en este caso en particular, el signo < está permitido y debe ir como tal, ya que esta funcionando como comparador y no tiene salida en html
ejemplo
tienes esto, que está mal
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[
var displayedPage = 1;
var lastPage = 1;
if (displayedPage < lastPage){
alert('xxx');
}
//]]>
//<![CDATA[
var displayedPage = 1;
var lastPage = 1;
if (displayedPage < lastPage){
var z = 1;
}
document.write("<a href='xxx.php?id=01&tema=detalles' title='detalles & sugerencias'><b>Detalles</b></a>");
//]]>
Ahora, para una validación correcta y para un javascript correcto (ya que en la segunda script que si saca algo por pantalla, tendrias una advertencia) sería
Código HTML:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[
var displayedPage = 1;
var lastPage = 1;
if (displayedPage < lastPage){
alert('xxx');
}
//]]>
//<![CDATA[
var displayedPage = 1;
var lastPage = 1;
if (displayedPage < lastPage){
var z = 1;
}
document.write("<a href='xxx.php?id=01&tema=detalles' title='detalles & sugerencias'><b>Detalles<\/b><\/a>");
//]]>
es decir usas
CDATA (evitando que se procese por parte del validador ese bloque) para prevenir errores de validación xhtml y comentas cualquier caracter especial (es el caso de
("/") de Js si este tiene que ser mostrado en el html generado, para evitar errores propios de javascript.
Fijate el detalle de que inclui el caracter
& en la segunda script, habitualmente el validador exige que lo expreses como
&, sin embargo en este caso no te lo considerará un error porque directamente no lo procesa por estar en un
CDATA.
Como ves son 2 cosas distintas las que tenemos en cuenta
Saludos