というわけで展開へ…
私はいくつかの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 式です...
これは、ハードコードされた数値ではなく、(現在の要素の数をカウントする) 式を渡すと想定しています。
私はそれを行う方法を知っていますが、それを行う方法を単に見つけることができません.イライラします.
更新:明確にするために...「最後のアイテムノードの後のアイテムノード」を返したいと思います。属性は、既存のノードを区別するためだけにありました)。これにより空のノードセットが返されることに感謝します。
更新:まあ、私は自分の答えを持っているので、なぜこれが欲しかったのかを説明するのは公平だと思います:)
基本的に、xPath は一部の .Net コードで読み取りアドレスではなく書き込みアドレスとして使用されます。
存在しない場所の xPath を EnsureNodeExists ルーチンに渡します。(注: この EnableNodeExists ルーチンを変更することはできません) コードは xPath の各要素を反復し、存在しない場合は作成し、次の反復の親として設定します。
したがって、このコードを "/root/list/item[position() = last()]/following-sibling::item[1]" で 3 回呼び出すと、3 つの項目ノードが作成されます。