|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Bonjour,
Comment puis-je définir en DOM ou DOM + Xpath une boucle prenant en compte tous les titres h1, h2, h3... d'un document xhtml dans l'ordre dans lequel ils sont placés, indépendamment de leur hiérarchie ? (Par exemple h1, h2, h3, h3, h3, h2, h3, h3, h1...) Grand merci d'avance |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Fais un XPath :
//h1|//h2|//h3|//h4|//h5|//h6
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
10
|
|
|
#3 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Merci Séb pour ta réponse.
Effectivement, c'est la solution la plus simple, compte tenu du faible nombre de niveaux de titre prévus (je n'utilise jamais plus de 5 niveaux). |
|
|
00
|
|
|
#4 | ||||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Bonjour,
Petite difficulté cependant : Si j'effectue la recherche sur tout le document, Code :
Si par contre, j'effectue la recherche sur une div contenant le document principal, Code :
Comment dois-je libeller $query pour que tous les titres de la div soient vus ? |
||||
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
comme ça
Code :
div[@id = 'Document']//*[self::h1|self::h2|self::h3|self::h4|self::h5|self::h6]
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Merci Stealth
J'ai toujours grand plaisir à voir répondre le Maître ! Malheureusement la solution que tu proposes ne semble pas fonctionner : aucun titre n'est sélectionné. Il semble que c'est la transition div[@id = 'Document']//* (et plus généralement div[@id = 'Document']//quelque chose) qui pose problème : ne sélectionne aucun noeud. |
|
|
00
|
|
|
#7 |
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
montre la source
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#8 | ||||||
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Il n'y a a priori pas de code particulier.
La partie principale (div "Document") est structurée à l'aide de div "Section" imbriquées, chaque section correspondant à un niveau de titre (je reproduis ci-dessous cette structure en me limitant au niveau 2) : Code :
Code :
Le code d'essai est basique : Code :
|
||||||
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
faut mettre // devant ton div
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Merci Stealth !
Ça marche parfaitement avec le code que tu m'as indiqué : Code :
$query = "//div[@id = 'Document']//*[self::h1|self::h2|self::h3|self::h4|self::h5|self::h6]"; Je commence à avoir les réflexes DOM (après un apprentissage quelque peu difficile Merci encore PS : Le code proposé par Séb Code :
$query = "//div[@id = 'Document']//h1|//h2|//h3|//h4|//h5|//h6"; |
|
|
00
|
|
|
#11 | |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Citation:
Pourquoi ce comportement du code de Séb ? |
|
|
|
00
|
|
|
#12 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Comment l'approche de Séb doit-elle donc être libellée ?
|
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
elle est correct, c'est juste ce que t'as rajouté qui est faux, puisque tu rajoutes un OU
du coup ça donne (//div[@id = 'Document']//h1) OU //h2 OU //h3 OU //h4 OU //h5 OU //h6
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Malgré quelques essais, je ne trouve pas la bonne façon de transcrire l'approche de Séb.
Comment faut-il libeller l'instruction $query ? |
|
|
00
|
|
|
#16 | |||
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
Citation:
et t'es pas obligé de faire un xpath une boucle avec un getElementsByTagname suffit Code :
__________________
http://blog.stealth35.com/ |
|||
|
|
00
|
|
|
#17 | |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Citation:
Je voulais par curiosité essayer de faire marcher les deux méthodes. Quand à la boucle, je préfère utiliser la logique Xpath qui me semble conceptuellement plus élégante. (Par ailleurs, la fonction de traitement en aval de la recherche est basée sur une logique de nodeList et a pour argument la liste des titres trouvés.) Petite question complémentaire : Dans la mesure où une recherche par Xpath contient une ou plusieurs boucles implicites, qu'est-ce qui est le plus rapide : une recherche par Xpath ou une recherche "plus basique" par une boucle DOM ? |
|
|
|
00
|
|
|
#18 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 139 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Citation:
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
10
|
|
|
#20 |
|
Membre du Club
![]() Boris conception et traitement de documents xhtml Inscription : août 2011 Messages : 107 ![]() |
Effectivement, je pensais naïvement que la recherche dans un document xhtml et celle dans une div procèdent de la même logique.
D'où, comme tu le soulignes, la nécessité de bien formuler ses questions. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com