У меня есть выражение XPath с предикатом, который выбирает
имя и идентификатор человека из вложенного элемента, используя
метод XPathNavigator.Select.
Это работает:
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>