2016-04-18 9 views
1

祖先が特定の値を持たないXMLの要素を選択しようとしています。例えば、目的のためのこのXMLを持ってみましょう:XPathを使用して祖先で値のない要素を選択

​​

私は自分自身や自分の祖先のいずれかで彼らのプラットフォーム値として「モバイル」持たないすべての外部参照を選択して何かを必要としています。上記の例では、クエリーは外部参照2と3を返す必要があります。どちらかまたはその祖先もプラットフォームが「モバイル」に設定されていない(またはプラットフォームがまったく定義されていない)からです。

祖先を使用してxrefクエリのいくつかの組み合わせを試し、xrefの祖先のすべてのプラットフォーム値を連結し、not(contains())を使用してモバイル部分をフィルタリングしましたが、すべて運がありません。あなたはこのXPathを使用することができ、事前

答えて

1

ありがとう:

それはあなたができる場合 //を避けるために、一般的に良いことだ
//xref[not(ancestor-or-self::*/@platform = 'mobile')] 

。あなたのXMLは、常にこのような構造を持っているとしている場合は、代わりに使用することができます:[] sの間

/doc/block/xref[not(ancestor-or-self::*/@platform = 'mobile')] 

部分が両方で同じです。

+0

これから私は私のニーズを完全に解決することができます。私は2日前にXPathを学習し始めたので、これが何をしているのかを頭に入れようとしていますが、ありがとうございます! –

関連する問題