Я читаю о сокращении '//', которое, по-видимому, является сокращением для:
'/потомок-или-я'
понятно, чего ожидать, скажем, от простого примера такого выражения, например,
//мой узел
Он вернет список узлов всех экземпляров в документе, найденных в корне, элементов с именем «myNode».
Однако что означает более сложное выражение, например:
//узел//мойузел
?
Поскольку // (сокращение от '/descendant-or-self') дважды соответствует корневому узлу, значит ли это, что первая часть выражения '//aNode' является избыточной и только увеличивает время, необходимое для завершения выполнение выражения (после того, как все еще были найдены только все выражения во всем документе «myNode»)?
'//myNode' и '//aNode//myNode' приведут к одному и тому же результату?
Наконец, если бы я искал в документе экземпляр узла «myNode», который был косвенным потомком узла «interestingTree». Но мне не нужен экземпляр узла myNode, который является непрямым потомком узла nonInterestingTree, как мне это сделать?
например, поиск в документе:
<root>
<anode>
<interestingTree>
<unknownTree>
<myNode/><!-- I want to find this one, not the other, where I don't know the path indicated by 'unknownTree' -->
</unknownTree>
</interestingTree>
<nonInterestingTree>
<unknownTree>
<myNode/>
</unknownTree>
</nonInterestingTree>
</anode>
<anode>
<someOtherNode/>
</anode>
</root>
Спасибо!