在WSO2中使用Xpath 2.0中的If / else语句

时间:2014-10-21 09:30:17

标签: xml xpath wso2 wso2esb xpath-2.0

我在WSO2 Developer studio中使用XPATH 2.0来对Payload Mediator中的数据执行一些转换。在一个转换中,我必须检查遗留服务响应中是否存在元素然后打印'是,它确实'否则'否,它没有'。

我使用以下语法。

if(fn:exists(//*/*[local-name()='HomePhone'])) then fn:concat('Yes','it does') 

else fn:concat('No','it dont')

它给了我以下错误消息。 Error Message

我对语法感到困惑。在我的特定场景中,在Xpath 2.0中使用If / else的正确方法是什么?

注意:“fn:concat”函数可以正常工作。

1 个答案:

答案 0 :(得分:1)

我相信您正在尝试在ESB中实现一个synapse配置来实现If then ELSE closure

您需要使用过滤介体来实现这一点,这是ESB Synapse,

 <filter source="fn:exists(//*/*[local-name()='HomePhone'])" regex="false">
            <then>
               <log level="custom">
                  <property name="*********" value="NULL Property Value"/>
               </log>
            </then>
            <else>
               <log level="custom">
                  <property name="*********" value="NOT NULL Property Value"/>
               </log>
            </else>
         </filter>

请在[1]

上找到过滤器介体文档

[1]。 https://docs.wso2.com/display/ESB481/Filter+Mediator