2015-06-26 112 views
1

在我的代理中,我使用了過濾器介體。我的目標是激活序列,如果上某些屬性的一些條件已被驗證:WSO2篩選器代理布爾表達式求值器問題

codice = 0 idElementoCross是從null或空字符串不同,或者如果它存在 tipoElementoCross是從null或空字符串不同,或者如果它存在

我寫了這個條件:

<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。

我在想什麼?

回答

2

這是因爲當沒有價值,// tipoElementoCross返回節點,而不是文本值:

發送<tipoElementoCross></tipoElementoCross>

// tipoElementoCross = <tipoElementoCross></tipoElementoCross>

// tipoElementoCross /文() =