Выбор конкретного узла с использованием XPATH - PullRequest
1 голос
/ 14 января 2011

У меня есть простой XML-документ:

<?xml version="1.0" encoding="utf-8" ?>
<root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <date>BBB</date>
  <name>CCC</name>
</root>

Мне нужно выбрать значение имени "CCC", по значению даты "BBB". Это хорошо для следующей XPATH:

/root[date=BBB]/name

Но пока у меня объявлено пространство имен, я не могу превысить XPATH. Для этого случая я знаю, что можно использовать функцию local-name (). Но если я напишу следующее выражение

/*[local-name() = 'root[date=BBB]']/*/*[local-name() = 'name']

Не работает.

1 Ответ

1 голос
/ 14 января 2011

Замена любого теста QName на *[local-name()='...'] in

/root[date='BBB']/name

Вы должны использовать:

/*[local-name() = 'root'][*[local-name()='date']='BBB']
  /*[local-name() = 'name'] 

Но для этого случая я бы использовал:

/*[*[local-name()='date']='BBB']/*[local-name() = 'name']

Немного короче с "любым корневым элементом".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...