XSLT et XQuery sur l'entrée html invalide, des morceaux de URI ressemblent à des entités
Question
J'utilise Saxon 9 pour analyser les sources HTML non valides. Plus précisément, le html a des valeurs href comme suit:
certains texte
Je reçois des erreurs:
"erreur signalée par l'analyseur XML: La référence à l'entité « doit g_varID » terminer par le ';' delimiter. "
L'analyseur XML est en train de lire la chaîne « & g_varID » plaint qu'il devrait y avoir un « ; » pour délimiter l'entité. Mais, bien sûr, ce ne prétend pas être une entité HTML -. Il est juste un morceau d'un URI
Comment puis-je dire à l'analyseur de l'ignorer? Note:. J'utilise non-schéma courant saxon, pas Saxon-SA
La solution
Assurez-vous que vous avez un DOCTYPE xhtml correct. Selon le xhtml1-strict.dtd que je regarde, l'attribut href est déclaré CDATA, non PCDATA, ce qui signifie littéralement et est tout à fait correct et ne doit pas être interprétée comme une entité.
Autres conseils
Si votre code HTML est pas XML, alors comment voulez-vous tout processeur XML à ce processus?
Comme mentionné ci-dessus, ce n'est pas XML valide, il est HTML. Ce problème particulier, cependant, est celui qui nettoie bien rangé HTML par défaut: http: // www. w3.org/People/Raggett/tidy/ . Utilisez-le avec les arguments de ligne de commande ci-dessous pour convertir le HTML en XHTML:
tidy -asxhtml foo.html > foo.xhtml
Et alors vous devriez être en mesure de l'exécuter à travers votre XSLT.