2009-10-03 6 views
12

Voici l'extrait de code qui ne valide pas:XHTML ne validera pas && et <dans une fonction JavaScript

if (user_age > 15 && user_age < 91) 

Il obtient les erreurs suivantes:

XML Parsing Error: StartTag: invalid element name

et

XML Parsing Error: xmlParseEntityRef: no name

La première erreur est lancée pour le "inférieur à" et la seconde est lancée deux fois, une fois pour chaque perluète.

Remplacer les signes ci-dessus par & et < valide bien, mais bien sûr, il ruine complètement la fonction.

+0

Vous pouvez remplacer votre expression par celle-ci: '! (! (User_age> 15) ||! (91> user_age))'. Mais c'est juste une solution de contournement. – Gumbo

+0

Ajout des balises CDATA résolu le problème. Merci beaucoup. –

+0

PROBLEME SI Javascript était dans un XML et XHTML est généré par XSLT: les CDATA ">", "<" et "&" sont convertis. alert ((2> 1)? 'OK1': 'OK2'); // est converti! Utilisez

Répondre

31

Ou vous pouvez protéger le script de la validation xml comme ceci:

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

protéger de la validation xml, cela ressemble à tricher dans un tester. Literal & <> doit être dans CDATA en XML valide, sans cela, Firefox devrait refuser de rendre le document si Firefox était conforme (mais maintenant le document n'est probablement pas utilisé comme application/xhtml + xml', cela n'arrivera donc pas). – u0b34a0f6ae

8

script Déplacer vers un autre fichier :)

Il est standard (et bonne) habitude de style distinct (dans le fichier .css), les données (.html) et des scripts de cours dans le fichier .js.

+0

css devrait également être dans son propre fichier – MrChrister

+0

juste envoyer une mise à jour :) – IProblemFactory

1

mettre javascript <![CDATA[...]]> section

+2

Comme indiqué dans une réponse à la réponse de Martin: Ne pas oublier de le commenter car est un littéral XML en JavaScript. –

2

Tous Javascript doit être CDATA en XHTML:

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

Ne pas oublier de le commenter car est un littéral XML en JavaScript. –

+1

Internet Explorer semble entrer en conflit avec cela. Par exemple, les erreurs sont quand il y a < symboles dans le code Javascript. –

0

vous pouvez essayez CDATA mais un certain temps cela ne fonctionnera pas, cela dépend du réglage du serveur je suppose. Je ne suis pas un pro, mais j'ai testé, et je n'ai pas travaillé, mais si vous mettez le code javascript dans le fichier. Js, puis lier ce fichier quelque part dans votre corps. ça va certainement marcher. TESTÉ PERSONNELLEMENT.

Questions connexes