2009-07-16 4 views
0

Il y a une page xhtml, la source de cette page a été analysée avant le chargement dans le navigateur, pour trouver des positions XPath. Ensuite, cette page a été chargée dans le navigateur, et je veux via JAvaScript (sur certaines actions) insérer du texte dans les positions XPath, qui ont déjà été trouvées. Le problème est qu'en JavaScript (jQuery) je ne peux obtenir que innerHTML (DOM HTML) de cette page, et il diffère de DOM XHTML (XML DOM) qui ont été analysés. Comment puis-je obtenir en JavaScript XML DOM de la page XHTML, pas HTML DOM. Exemple (une partie de la page):Problèmes avec l'analyse de la page XHTML via javascript

<div><p /> 
    Text1 
    <p /> 
    Text2 
</div> 

Quand je veux trouver la position XPath de Texte1 il sera/div/text() [1], mais dans le navigateur cette partie du code sera converti en HTML DOM, et ressemble à ceci:

<div> 
    <p>Text1</p> 
    <p>Text2</p> 
</div> 

et Texte1 est maintenant sur le/div/p [1]

Répondre

0

ne pas utiliser jQuery pour accéder au DOM. Au lieu de cela, utilisez XPath dans Javascript ou trouvez une bibliothèque qui vous permettra d'interroger des nœuds XML en utilisant XPath. En savoir plus à ce sujet au Mozilla Developer Center's Introduction to XPath in Javascript.

+0

Mais j'ai aussi essayé d'utiliser simplement JavaScript, mais le problème est, pour obtenir un DOM XML de page ... Même quand je viens de chercher DOM de cette page dans Mozzila (Firebug), je vois la représentation HTML DOM de la page, pas source-xml dom. –

+0

Eh bien, voyez la réponse de David ci-dessous pour savoir pourquoi vous ne pourrez pas utiliser XPath tant qu'il sera analysé en HTML. Dans ce cas, je recommande d'utiliser les différentes méthodes du DOM pour accéder aux informations dont vous avez besoin plutôt qu'à XPath. – Rahul

0

Servir le XHTML en tant qu'application/xhtml + xml ou le construire de sorte qu'il suive the HTML compatibility guidelines.

Vous ne pouvez pas dire au navigateur qu'il s'agit d'un code HTML (en le servant comme texte/html) et s'attendre à ce qu'il le traite comme XHTML.

(et essayer d'obtenir la sémantique droite, ce genre de non-sens est un paragraphe qui ne contient rien suivi d'un texte qui ne sont pas dans un paragraphe?)

+0

Le problème est, que je ne peux pas changer la source des pages, parce que c'est un module (via Proxy) pour TWiki. J'utilise des pages TWiki, le contenu de ces pages étant défini comme content = "text/html" mais toutes les pages sont valides pour XHTML 1.0. http://twiki.org/ –

+0

La validité n'est que le début de la vérification de conformité. Si vous voulez utiliser XHTML (et vous soucier de IE), vous devez vous conformer aux consignes de compatibilité HTML. Si le service ne vous donne pas de code conforme, vous devez le réparer ou le traiter vous-même avant de le transmettre. C'est cassé - réparez-le, n'essayez pas de contourner le problème. – Quentin

Questions connexes