Пример того как изменяется контекст во время выполнения XPath запроса
Может кто-нибудь объяснить пошагово как изменяется контекст при выполнении XPath выражения? Особенно интересует как вычисляется СontextPosition и ContextSize. Есть такой запрос: //item[2].
Выполняется на таком документе:
<root>
<node>
<item/>
<item/>
<item/>
</node>
<item/>
<node>
<item/>
<item/>
<item/>
</node>
<item/>
</root>
Не могу понять как вычисляется позиция элемента во время выполнения.
Ответы (1 шт):
Чтобы было легче понимать, о каких именно элементах речь, изменим xml следующим образом:
<root>
<node>
<item>1</item>
<item>2</item>
<item>3</item>
</node>
<item>4</item>
<node>
<item>5</item>
<item>6</item>
<item>7</item>
</node>
<item>8</item>
</root>
Путь // проходит по всем узлам. Если точкой отсчёта является корень xml, то элементы со значениями 1, 2, 3 составят первый node-set. Вторым элементом [2] будет 2.
Второй node-set - элементы со значениями 5, 6, 7. Второй элемент среди них: 6.
Элементы со значениями 4 и 8 образуют ещё один node-set. Номер [2] - это 8.