XPathNavigator.Selectメソッドを使用して、ネストされた要素内から人の名前とIDを選択する述語を持つXPath式があります。
これは機能します:
root/all_clients/client/client_name_and_ID[client_ID = 'xxx']
これも機能します:
root/all_clients/client[client_name_and_ID/client_ID = 'xxx']/client_name_and_ID
述語を次のレベルに持っていくと、機能しません。
root/all_clients[client/client_name_and_ID/client_ID = 'xxx']/client/client_name_and_ID
フィルタリングは取得しませんが、セット全体を取得します。
これは、XPathまたはASP.NETに固有の制限によるものですか、それとも私が愚かなことをしているためですか?
以下は、関連するXMLファイルの抜粋です。
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:///n:\Projects\XML\Medical\Example_01.xsd">
<all_clients>
<client>
<client_name_and_ID>
<first_name>Fred</first_name>
<middle_name>James</middle_name>
<last_name>Bowman</last_name>
<client_ID>1</client_ID>
</client_name_and_ID>
</client>
<client>
<client_name_and_ID>
<first_name>Mark</first_name>
<middle_name>David</middle_name>
<last_name>Colder</last_name>
<client_ID>2</client_ID>
</client_name_and_ID>
</client>
<client>
<client_name_and_ID>
<first_name>Joe</first_name>
<last_name>Lewis</last_name>
<client_ID>3</client_ID>
</client_name_and_ID>
</client>
<client>
<client_name_and_ID>
<first_name>Sam</first_name>
<last_name>Plank</last_name>
<client_ID>4</client_ID>
</client_name_and_ID>
</client>
</all_clients>
</root>