Проблема с оценщиком логического выражения прокси-сервера фильтра WSO2

в моем прокси я использую медиатор фильтра. Моя цель — активировать последовательность, если проверяются некоторые условия для некоторых свойств:

codice = 0 idElementoCross отличается от нулевой или пустой строки, или если он существует.

я написал это условие:

 <sequence>
     <property name="codice" expression="//codice"></property>
     <property name="idElementoCross" expression="//idElementoCross"></property>
     <property name="tipoElementoCross" expression="//tipoElementoCross"></property>
     <filter xpath="boolean(fn:get-property('codice')=0 and fn:get-property('tipoRisposta')='worker' and fn:get-property('tipoElementoCross')!='null' and fn:get-property('idElementoCross')!='null' and fn:get-property('tipoElementoCross')!='' and fn:get-property('idElementoCross')!='' and fn:get-property('tipoElementoCross') and fn:get-property('idElementoCross'))">
                 <then> ...

но в моем журнале я вижу, что esb вводит последовательность, даже если idElementoCross и tipoElementoCross пусты. Я использую WSO2 ESB 4.8.1.

Что мне не хватает?


person Alex    schedule 26.06.2015    source источник


Ответы (1)


Это связано с тем, что при отсутствии значения //tipoElementoCross возвращает узел, а не текстовое значение:

отправить <tipoElementoCross></tipoElementoCross>

//типоЭлементоКросс = <tipoElementoCross></tipoElementoCross>

//типоЭлементоКросс/текст() =

person Jean-Michel    schedule 29.06.2015