2009-10-03 10 views
12

Aquí está el fragmento de código que no se validará:XHTML no validará && y <en una función de JavaScript

if (user_age > 15 && user_age < 91) 

Se pone los siguientes errores:

XML Parsing Error: StartTag: invalid element name

y

XML Parsing Error: xmlParseEntityRef: no name

Se emite el primer error para el "menor que" y el segundo se arroja dos veces, una para cada ampersand.

Reemplazar los signos anteriores con & y < valida bien, pero por supuesto arruina completamente la función.

+0

Puede reemplazar su expresión por esta: '! (! (User_age> 15) ||! (91> user_age))'. Pero eso es solo una solución. – Gumbo

+0

Agregar las etiquetas CDATA corrigió el problema. Muchas gracias. –

+0

PROBLEMA SI Javascript estaba en un XML y XHTML es generado por XSLT: el CDATA ">", "<" y "&" se convierten. alerta ((2> 1)? 'OK1': 'OK2'); // ¡Está convertido! Use

Respuesta

31

O puede proteger el script desde la validación de XML como esto:

<script type="text/javascript"> 
//<![CDATA[ 
    if (user_age > 15 && user_age < 91) { 
     // do soemthing 
    } 
//]]> 
</script> 
+1

proteger de la validación xml, eso suena como hacer trampa en un prueba. Literal & <> debe estar dentro de CDATA en XML válido, sin él, Firefox debe rechazar la reproducción del documento si Firefox cumple con los requisitos (pero ahora el documento probablemente no se sirve como 'application/xhtml + xml', por lo que no sucederá). – u0b34a0f6ae

8

guión Mover a otro archivo :)

Es normal (y buena) costumbre de estilo separada (en .css archivo), datos (.html) y de secuencias de comandos del curso a .js archivo.

+0

css también debe estar en su propio archivo – MrChrister

+0

simplemente envíe la actualización :) – IProblemFactory

1

poner javascript en <![CDATA[...]]> sección

+2

Como se indicó en una respuesta a la respuesta de Martin: No olvides comentarlo ya que es un literal XML en JavaScript. –

2

Todo Javascript debe estar CDATA en XHTML:

<![CDATA[ 
if (user_age > 15 && user_age < 91) 
]]> 
+3

No olvides comentarlo como es un literal XML en JavaScript. –

+1

Internet Explorer parece entrar en conflicto con esto. Por ejemplo, se producen errores cuando hay símbolos < en código JavaScript. –

0

que pueda prueba CDATA pero algunas veces no funcionará, depende de la configuración del servidor, supongo. No soy profesional, pero probé y no funcioné, pero si pones el código de JavaScript en el archivo .js y luego vinculas este archivo a algún lugar de tu cuerpo. Definitivamente funcionará. PROBADO PERSONALMENTE.

Cuestiones relacionadas