Итак, я понятия не имею, как правильно сформулировать этот вопрос. Я хочу иметь список узлов и выбрать только один узел, но не вложенный узел. Например:
<root>
<my_element>
<my_element>
Some Text
</my_element>
</my_element>
</root>
Я знаю, что уже могу делать то, что хочу, используя этот xpath:
Context: /
xPath: descendant::my_element[not(ancestor::my_element)]
Что бы вернуть этот набор результатов:
<root>
[<my_element>]
<my_element>
Some Text
</my_element>
[</my_element>]
</root>
Это ожидаемое поведение того, что я хочу. Но я хочу иметь возможность изменить контекст на:
/my_element
И получите этот набор результатов:
<root>
<my_element>
[<my_element>]
Some Text
[</my_element>]
</my_element>
</root>
Я старался изо всех сил при просмотре документов xPath, и я почти ничего не придумал. Может кто-то здесь может дать некоторое представление?
Спасибо!
редактировать -
Я хочу иметь возможность выбрать потомка my_element, который не является предком my_element, за исключением узла контекста.
изменить еще раз -
Для дальнейшего объяснения.
Я хочу получить запрос xpath, который выбирает узлы my_element
, если узел не является дочерним для my_element
. Но если для контекста xpath задан узел my_element
, я не хочу, чтобы этот узел учитывался в выражении. Таким образом, xpath будет соответствовать следующему узлу my_element
, хотя на самом деле это дочерний элемент my_element
.
Вот еще несколько примеров.
<root>
<a>
<a>
<b>
<a>
Hello!
</a>
</b>
<a>
<b>
Hello Again
<a>
Sub
</a>
</b>
</a>
</a>
</a>
</root>
Context: /root/
Desire: Want to grab all A nodes, so long as they aren't a descendant of A
Result:
<root> == Context
[<a>]
<a>
<b>
<a>
Hello!
</a>
</b>
<a>
<b>
Hello Again
<a>
Sub
</a>
</b>
</a>
</a>
[</a>]
</root>
Context: /root/a/
Desire: Want to grab all A nodes, so long as they aren't a descendant of A, not including the context /root/a/
Result:
<root>
<a> == Context
[<a>]
<b>
<a>
Hello!
</a>
</b>
<a>
<b>
Hello Again
<a>
Sub
</a>
</b>
</a>
[</a>]
</a>
</root>
Context: /root/a/a/
Desire: Want to grab all A nodes, so long as they aren't a descendant of A, not including the context /root/a/a/
Result:
<root>
<a>
<a> == Context
<b>
[<a>]
Hello!
[</a>]
</b>
[<a>]
<b>
Hello Again
<a>
Sub
</a>
</b>
[</a>]
</a>
</a>
</root>
Context: /root/a/a/a/
Desire: Want to grab all A nodes, so long as they aren't a descendant of A, not including the context /root/a/a/a/
Result:
<root>
<a>
<a>
<b>
<a>
Hello!
</a>
</b>
<a> == Context
<b>
Hello Again
[<a>]
Sub
[</a>]
</b>
</a>
</a>
</a>
</root>
Надеюсь, это прояснит мои желания. Спасибо всем, кто пытается!