Так что расширить ...
У меня есть XML
<root>
<list>
<item value="9"/>
<item value="3"/>
<item value="1"/>
<item value="8"/>
<item value="4"/>
</list>
</root>
У меня есть XPath "/ root / list / item [4]", который, я полагаю, извлечет 5-й элемент 'item' (атрибут value которого равен 4)
Это говорит о том, что XPath "/ root / list / item [5]" будет ссылаться на (пока еще не существующий) 6-й элемент.
То, что я хотел бы, - это выражение XPath, которое будет ссылаться на элемент 'Next' (пока еще не существующий) 'item' независимо от того, сколько элементов существует в настоящее время ...
Я предполагаю, что это передаст выражение (которое будет считать количество текущих элементов), а не жестко закодированное число.
Я знаю, как я это сделаю, но просто не могу найти, как мне это сделать ... разочарование.
Обновление : Чтобы уточнить ... Я хотел бы вернуть "узел элемента после последнего узла элемента". атрибуты были там только для того, чтобы отличить существующие узлы). Я ценю, что это вернет пустой набор узлов.
Обновление : Ну, у меня есть свой ответ, поэтому я думаю, это будет честно, я объясняю, почему я хотел этого:)
По сути, xPath используется некоторым кодом .Net в качестве адреса записи, а не адреса чтения.
Я передаю xPath несуществующего местоположения в подпрограмму EnsureNodeExists. (Примечание: я не могу изменить эту процедуру EnsureNodeExists)
Код будет перебирать каждый элемент xPath, создавая его, если его там нет, и затем устанавливая его в качестве родителя для следующей итерации.
Таким образом, я могу вызвать этот код с помощью "/ root / list / item [position () = last ()] / follow-sibling :: item [1]" 3 раза, и это приведет к созданию 3 узлов элементов.