Sziasztok!
Ismet lenne egy XPath kerdesem. Ezt most meg tudnam oldani koddal is (lekerem a parent node-ot, aztan vegigmegyek a leszarmazottain, es kozben szurok), de kivancsi vagyok XPath-al hogy lenne. A kivancsisagon kivul azert is erdekes, mert tobb helyen elojon a problema, es az XPath - azon kivul, hogy erre valo - konnyebben modosithato.
Igy nez ki a kerdeses reszfa:
...
<td eddig_el_tudok_jutni>
str1_ez_is_jellemzo
<br/>
<span >str2</span>
<br/>
...
<hr />
ez_a_jellemzo_szoveg
<br/>
ez_valtozik_ennek_az_erteke_erdekel
<br/>
...
</td>
...
A td-ig mar kesz. Mondjuk az str2 utani text node erteke sem lenne nehez, mert azt span[text()='str2'] elso szoveges siblingje megadja.
Itt viszont a 'ez_a_jellemzo_szoveg' tartalmu text node utani text node erteke kellene.
Valami olyanra lenne szuksegem, ahol a text node szovegere tudok hivatkozni a feltetelben, de a self(), text() meg hasonlok nem vezettek eredmenyre (nem ismeri a szintaxist). A text()-et csak a td felteteleben hasznalhatom.
A td-ig el tudok jutni, mondjuk igy:
..../td[normalize-space(text())='ez_a_jellemzo_szoveg'
De ez nyilvan a td-t adja vissza, a szoveges node-ot nem tudom meg ettol.
..../text()[ide_mit_irjak='ez_a_jellemzo_szoveg']
A jellemzo szoveg elotti node-ok tipusa/darabszama valtozhat, ugyhogy a [123] nem jo feltetel. A DOM szerkezetet nem valtoztathatom (pont az a lenyeg, hogy ebbol akarom kinyerni a benne tarolt infot).
- 975 megtekintés
Hozzászólások
td/text()[preceding::text()='ez_a_jellemzo_szoveg' and preceding::br and following::br]
nekem a normalizálás normalize-space(preceding::text()) nem akar működni, úgyhogy az aposztrófok közé a pontos szöveget kell tenni.
szerk.
lehet még td/text()[preceding::text()[1]='ez_a_jellemzo_szoveg'] ha nem a két br a lényeg, hanem hogy pontosan az előző text node az 'ez_a_jellemzo_szoveg'
- A hozzászóláshoz be kell jelentkezni
Koszi az otletet. Vegul megneztem a szabvanyban a normalize-space()-t (amit nem tudok kikerulni a benthagyott whitespace szemet miatt).
"If the argument is omitted, it defaults to the context node converted to a string, in other words the string-value of the context node."
Ezt valahogy egy tutorial sem emliti, egy peldaban nem szerepel..
Szoval a vege ez lett:
..../text()[preceding::text()[normalize-space()='mystr']][1]
--
"Digital content is not a tangible good and should not be subject to the same liability rules as toasters." - Francisco Mingorance, BSA
- A hozzászóláshoz be kell jelentkezni