次のXMLを持つ:
<node>Text1<subnode/>text2</node>
XPathを介して最初または2番目のテキストノードを選択するにはどうすればよいですか?
このようなもの:
/node/text()[2]
もちろん、ノード内のすべてのテキストがマージされた結果であるため、機能しません。
次のXMLを持つ:
<node>Text1<subnode/>text2</node>
XPathを介して最初または2番目のテキストノードを選択するにはどうすればよいですか?
使用:
/node/text()
これにより、XMLドキュメントの最上位要素(「ノード」という名前)のすべてのテキストノードの子が選択されます。
/node/text()[1]
これにより、XMLドキュメントの最上位要素(「ノード」という名前)の最初のテキストノードの子が選択されます。
/node/text()[2]
これにより、XMLドキュメントの最上位要素(「ノード」という名前)の2番目のテキストノードの子が選択されます。
/node/text()[someInteger]
これにより、XMLドキュメントの最上位要素(「node」という名前)のsomeInteger番目のテキストノードの子が選択されます。次のXPath式と同等です。
/node/text()[position() = someInteger]
あなたのxpathが動作するはずです。 MarkLogicとZorba Xquery/Xpathの両方の実装でxpathとmineをテストしました。
両方とも機能するはずです。
/node/child::text()[1] - should return Text1
/node/child::text()[2] - should return text2
/node/text()[1] - should return Text1
/node/text()[2] - should return text2