2009-06-03 16 views
0

特定の属性値を持つ特定の位置にノードを見つけるXPathクエリを作成する方法はありますか?ノードの位置と属性値を尊重するXPathクエリ

は、次のサンプルXMLを考えてみましょう:

<Item Type="Book"> 
<!--1st Param node in a Book item is always the autors last name--> 
<Param Value="Updike" /> 
<!--2nd Param node in a Book item is always the autors first name--> 
<Param Value="John" /> 
<!--3rd Param node in a Book item is always the book title--> 
<Param Value="Toward the End of Time" /></Item> 

は今、私は次のことを見つけ、単一のクエリを作成することができます

は、第二タイプ「ブック」のすべて項目ノードを探しますParamノードには、値「」の「John」があります。 私は、著者名が「John」であるすべての本を探したいと思います。

.NET XPathDocumentを使用しています。

答えて

2

.NET XPathDocumentを使用しています。

XPath V1に制限されます。

(相対パスと絶対パス)を述語に含めることができます。だから、のようなもの:

//Item[@Type='Book'][./Param[2][@Value = 'John']] 

(私は試してみて避ける「//」、それは全体のDOMの検索を必要とするため、より多くのコンテキストなしでより良い軸を提供することができないでしょう。)

+0

あなたの式は本に限定されるものではありません。 –

+0

@Ben:修正されました。 – Richard

0

表現

//Item/Param[2][@Value='John'] 
5

「書籍」という項目のみを使用する要件についてはどうでしょうか?

はこれを試してみてください:

/Item[@Type='Book'][Param[2][@Value='John']] 
関連する問題