私は XPATH を初めて使用するので、XPATH クエリを使用してこれを行う良い方法があるかどうか知りたいです。
XML ツリー内の連続する兄弟ノードを特定の事前定義されたルールに一致させたいと考えています。 "、XPATH クエリがそのようなシーケンスの最初のノード/最後のノードに一致するようにしたいし、後でそれらを処理できるように、XML ツリーからそのような連続したノードのシーケンスをすべて抽出したいと考えています。
ありがとう!
私は XPATH を初めて使用するので、XPATH クエリを使用してこれを行う良い方法があるかどうか知りたいです。
XML ツリー内の連続する兄弟ノードを特定の事前定義されたルールに一致させたいと考えています。 "、XPATH クエリがそのようなシーケンスの最初のノード/最後のノードに一致するようにしたいし、後でそれらを処理できるように、XML ツリーからそのような連続したノードのシーケンスをすべて抽出したいと考えています。
ありがとう!
考えられる解決策の 1 つを次に示します。
初め:
XML ツリー内の連続する兄弟ノードを特定の事前定義されたルールに一致させたいと考えています。 "、
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
それで:
このような連続するノードのシーケンスをすべて XML ツリーから抽出したいのですが ...
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
|
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
/following-sibling::*[position() = 1 or position()=2]
真の XPathVisualizer での選択は次のようになります (_http://www.topxml.com/xpathvisualizer/ -- このリンクにはトロイの木馬が含まれています -- マルウェアから十分に保護されている場合にのみクリックしてください。アプリについては私に連絡してください。 ):
ついに:
XPATH クエリをこのようなシーケンスの最初のノード/最後のノードに一致させたい
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
|
//*[@value='A'
and
following-sibling::*[1]/@value='B'
and
following-sibling::*[2]/@value='C']
/following-sibling::*[position()=2]
注:これは質問への回答ではありません。これを書いているとき、私はそれを誤解しました。
それらをクエリするにはposition()=1 or position()=last()
、ノードを選択するために使用する他の述語と一緒に述語として使用します。
XpathVisualizerでは次のようになります。
「それらを抽出する」ことはxpathの問題ではありません。そのためには、選択した要素を列挙してから、好きなことをすることができます。それはあなた次第です。