2012-04-07 9 views

Odpowiedz

57

Jak mogę wyszukać pierwszej k rodzeństwo po m węzła? Zasadniczo znajdź pewien węzeł, a następnie kontynuuj wyszukiwanie z tego węzła.

Zakładając, że mamy następujący dobrze ukształtowany dokument XML:

<t> 
    <n></n> 
    <k></k> 
    <m></m> 
    <k></k> 
</t> 

następnie następujące wyrażenie XPath:

/*/m[1]/following-sibling::k[1] 

wybiera pierwszy k następujące rodzeństwo z pierwszych m element potomny najwyższego elementu dokumentu XML.

+0

Zbyt skomplikowane. –

+0

Właściwie wczoraj chciałem usunąć mój głos, ale strona powiedziała mi, że po 24 minutach było już za późno. To jest życie. –

4

ładny pytanie: spróbować ........

<a> 
<n></n> 
<k></k> 
<m></m> 
<k></k> <==== 
<k></k> 
<m></m> 
<k></k> 
</a> 


    /a/k[. = preceding::m][1] 
+0

Ta odpowiedź jest interesująca, ale zaczyna się od ** pierwszego "m" mającego "k" po nim **, a nie od ** bieżącego węzła **. –

+0

Co więcej, czy 'previous :: m' bituje wsteczną referencją? Czy nie byłoby to mniej wydajne niż rozwiązanie, które najpierw szuka "m"? (Nie wiem) – jpaugh

Powiązane problemy