2010-06-25 8 views
1

J'ai un code très simple ci-dessous que je ne peux pas obtenir de valider sur http://validator.w3.org/check et les erreurs ont peu de sens pour moi. Je suis perplexe ici quelqu'un peut-il voir/comprendre le problème (s)?Pourquoi ce simple code ne va-t-il pas valider?

Code:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Test Mobile Site</title> 
     <link href="/css/site.css" rel="stylesheet" type="text/css" media="handheld" /> 
    </head> 
    <body> 
     <div id="test">Why won't you validate for me? :(</div> 
    </body> 
</html> 

Erreurs:

Error: Line 18, Column 46: Input is not proper UTF-8, indicate encoding ! Bytes: 0x92 0x53 0x20 0x52

Error: Line 69, Column 17: conditional section INCLUDE or IGNORE keyword expected

Error: Line 73, Column 39: xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected

Error: Line 73, Column 39: Content error in the external subset

+0

Il n'y a pas 73 lignes dans le code que vous avez posté ... –

+1

ouais, j'ai attrapé ça aussi. Mais essayez-le vous-même et vous devriez obtenir les mêmes erreurs. Un bug du validateur W3C? –

+0

Les erreurs sont dans une entité externe INCLUDEd par la DTD. – bobince

Répondre

1

Eh bien, ce fut mon deuxième temps à essayer de comprendre cela et après assez faire creuser je vois que, en Juillet 2008, le W3C apporté xHTML Basic 1.1 qui remplace maintenant xHTML Mobile Profile 1.2 de l'Open Mobile Alliance.

Morale de l'histoire: Vous trouverez des charges à l'aide de MP 1.2 DTD dans les exemples mobiles à travers le Web, mais vous devez utiliser:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"> 

si vous souhaitez valider correctement. J'espère que cela aidera quelqu'un d'autre à ne pas perdre le temps que j'ai fait!

Référence: http://en.wikipedia.org/wiki/XHTML#XHTML_Basic_and_XHTML-MP

1

Oui, le XHTML DTD Mobile Profile est faux. Vous ne validerez jamais aucun document l'utilisant.

Le problème est dans http://www.openmobilealliance.org/tech/DTD/xhtmlmp12-form-1.mod, qui est une version du module XHTML Forms que OMA a modifié pour ajouter un attribut, inputmode. Ils ont réussi à louper ça en collant ce commentaire avec une citation intelligente en elle à partir de MS Word dans le module:

NO REPRESENTATIONS OR WARRANTIES (WHETHER EXPRESS OR IMPLIED) ARE 
MADE BY THE OPEN MOBILE ALLIANCE OR ANY OPEN MOBILE ALLIANCE MEMBER 
OR ITS AFFILIATES REGARDING ANY OF THE IPR’S REPRESENTED ON THE OMA 

et l'enregistrer comme CP1252 au lieu de l'encodage par défaut pour les entités XML, UTF-8. Il en résulte une erreur précise concernant la séquence UTF-8 non valide, qui semble alors confondre le validateur en ne parvenant pas à analyser correctement les déclarations d'entité suivantes.

(Il est doublement comique que cette erreur d'encodage soit elle-même déclenchée par une erreur grammaticale de base, l'apostrophe des épiciers, mais puisque OMA sont les jokers qui nous ont donné le fiasco WAP, ce niveau d'incompétence est à prévoir.

Questions connexes