2009-11-26 4 views
1

У меня есть следующая структура Xml; Payment/Line, который имеет среди своего элемента IsFeePayment и элементы IsServiceProduct типа bool.Запрос XPath для соответствия в зависимости от комбинаций дочерних элементов

<Payment> 
    <Line> 
     <IsFeePayment>true</IsFeePayment> 
     <ISServiceProduct>true</IsServiceProduct>  
    </Line> 
</Payment> 

Мне нужна инструкция xpath, которая возвращает «true», если они оба являются истинными. , если один из них является ложным, я хочу, чтобы оператор xpath возвращал значение «false»

. Здесь почти отсутствует путь xpath, он возвращает строку, когда оба являются истинными.

/[местное имя() = 'Оплата']/ [местное имя() 'Линия' =] [* [местное имя() 'IsFeePayment' =] [текст() = 'истинный '] и * [local-name() =' IsServiceProduct '] [text() =' true ']]

Как я могу получить простой bool вместо всего элемента?

+0

по существу тот же вопрос, что и http://stackoverflow.com/questions/1460028/xpath-query-to-match-depending-on-combinations-of-child-elements – bignose

ответ

0

просто добавив логическое() вокруг выражения XPATH я уже исправляет проблему румяна

так ...

булево (/ [локальное имя() = 'Оплата']/ [local-name() = 'Line'] [* [local-name() = 'IsFeePayment'] [text() = 'true'] и * [local-name() = 'IsServiceProduct'] [текст() = 'истинный']])

1

Вы можете упростить XPath для

boolean(//Payment/Line[IsFeePayment='true' and IsServiceProduct='true']) 
Смежные вопросы