🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

6 total messages Started by Reeno Tue, 20 May 2008 11:00
XPath jak znalezc pierwsze rodzenstwo?
#9881
Author: Reeno
Date: Tue, 20 May 2008 11:00
28 lines
1873 bytes
Witam

Mam problem z XPath i znalezieniem pierwszego rodzenstwa.

Mamy np. XML:

<root>
<node>one</node>
<node>two</node>
<node3>three</node3>
<node4>four</node4>
</root>

Jaka formula XPath znajdzie mi pierwsze rodzenstwo dla node = 'two',
czyli docelowo chodzi o <node3>.
$x_path trzyma caly DOM XML;

Probowalem cos na styl tego

$x_path->evaluate('//node=\'two\'::following-sibling[1]');

ale niestety nie jest to poprawne wyrazenie, i z w3c schools nie moge
wywnioskowac jak powinno sie wykonac takie zapytanie...

Prosze o pomoc kolegow z wiekszym doswiadczeniem z XPath ;)

Pozdrawiam
Reeno
Re: XPath jak znalezc pierwsze rodzenstwo?
#9882
Author: max
Date: Tue, 20 May 2008 11:45
9 lines
1134 bytes
> ale niestety nie jest to poprawne wyrazenie, i z w3c schools nie moge
> wywnioskowac jak powinno sie wykonac takie zapytanie...
> 
> Prosze o pomoc kolegow z wiekszym doswiadczeniem z XPath ;)
> 
> Pozdrawiam
> Reeno
/node[text()='two'] ?
Re: XPath jak znalezc pierwsze rodzenstwo?
#9883
Author: TOUDIdel
Date: Wed, 21 May 2008 09:51
23 lines
1604 bytes
Użytkownik "max" <max@max.pl> napisał w wiadomości 
news:g0udfj$4j3$1@portraits.wsisiz.edu.pl...
>
>> ale niestety nie jest to poprawne wyrazenie, i z w3c schools nie moge
>> wywnioskowac jak powinno sie wykonac takie zapytanie...
>>
>> Prosze o pomoc kolegow z wiekszym doswiadczeniem z XPath ;)
>>
>> Pozdrawiam
>> Reeno
> /node[text()='two'] ?

<root>
    <node>one</node>
    <node>two</node>
    <node3>three</node3>
    <node4>four</node4>
</root>

takiego node'a nie ma. jest co najwyżej /root/node[text()='two']
-- 
td 
Re: XPath jak znalezc pierwsze rodzenstwo?
#9884
Author: TOUDIdel
Date: Wed, 21 May 2008 10:06
46 lines
2473 bytes
Użytkownik "Reeno" <reenomt2@gmail.com> napisał w wiadomości 
news:41f35acb-01a6-44df-802d-18e297170461@59g2000hsb.googlegroups.com...
> Witam
>
> Mam problem z XPath i znalezieniem pierwszego rodzenstwa.
>
> Mamy np. XML:
>
> <root>
> <node>one</node>
> <node>two</node>
> <node3>three</node3>
> <node4>four</node4>
> </root>
>
> Jaka formula XPath znajdzie mi pierwsze rodzenstwo dla node = 'two',
> czyli docelowo chodzi o <node3>.
> $x_path trzyma caly DOM XML;
>
> Probowalem cos na styl tego
>
> $x_path->evaluate('//node=\'two\'::following-sibling[1]');
>
> ale niestety nie jest to poprawne wyrazenie, i z w3c schools nie moge
> wywnioskowac jak powinno sie wykonac takie zapytanie...
>
> Prosze o pomoc kolegow z wiekszym doswiadczeniem z XPath ;)
>
> Pozdrawiam
> Reeno

trudno powiedziec o jakie rodzenstwo Ci chodzi, bo tak naprawdę "pierwsze" 
rodzeństwo dla <node>two</node> to są 2 elementy: <node>one</node> i 
<node>three</node>. Oba są takim samym rodzeństwem tego elementu. Więc 
doprecyzować trzebaby samo pojęcie "pierwsze rodzeństwo" (czy chodzi o 
pierwszy element rodzeństwa występującego przed węzłem kontekstowym czy po)

z Twojego przykładu jednak wnioskuję że chodzi o rodzeństwo występujące po i 
Twoja próba była całkiem poprawna, z tym że najpierw podaje się nazwę osi, 
potem ::, a potem badanie węzła:

/*/*[text()="two"]/following-sibling::*[1]

-- 
td 
Re: XPath jak znalezc pierwsze rodzenstwo?
#9885
Author: TOUDIdel
Date: Wed, 21 May 2008 10:25
10 lines
1446 bytes
Użytkownik "TOUDIdel" <toudidel@oDWA.pl> napisał w wiadomości 
news:g10sjp$scn$1@nemesis.news.neostrada.pl...
> /*/*[text()="two"]/following-sibling::*[1]

P.S. ale to i tak pod warunkiem że na drugim poziomie w dokumencie jest 
tylko jeden węzeł z zawartością tekstową równą "two". w przeciwnym wypadku 
można się zdziwić.
-- 
td 
Re: XPath jak znalezc pierwsze rodzenstwo?
#9886
Author: Reeno
Date: Wed, 28 May 2008 11:42
11 lines
1743 bytes
On 21 Maj, 12:25, "TOUDIdel" <toudi...@oDWA.pl> wrote:
>
> > /*/*[text()="two"]/following-sibling::*[1]
>
> P.S. ale to i tak pod warunkiem że na drugim poziomie w dokumencie jest
> tylko jeden węzeł z zawartością tekstową równą "two". w przeciwnym wypadku
> można się zdziwić.
> --
> td

tak jak mowisz, rozwiazalem to wlasnie w ten sposob.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads