AND运算符未在xsl文件中进行求值

时间:2017-08-10 08:48:58

标签: java xml xslt

我有一个xsl,它根据另一个值是true还是false来映射xml元素的值。我以前从未试过在xsl中使用布尔运算符,但我无法弄清楚为什么它不起作用。

这是我的xsl的摘录,其中我遇到了一个问题:

<xsl:choose>
    <xsl:when test="contains(payload/orderItem/processName, 'ResetPilotPassword') and /payload/orderItem/UsingOldSip = 'true'">
        <serviceId>
            <xsl:value select="/payload/orderItem/service/externalIds/externalId[displayName = 'MPLS ID']/externalId"/>
        </serviceId>
    </xsl:when>

    <xsl:when test="contains(payload/orderItem/processName, 'ResetPilotPassword') and /payload/orderItem/UsingOldSip = 'false'">
       <serviceId>
             <xsl:value-of select="payload/orderItem/bearerServiceIdentifier"/>
       </serviceId>
    </xsl:when>

    <xsl:otherwise>
        <serviceId>
            null
        </serviceId>
    </xsl:otherwise>
</xsl:choose>

基本上我有一个订单进来然后我正在评估元素“ProcessName”和“UsingOldSip”的值来确定要分配给元素“serviceId”的值。然而,元素正在填充null而不是正确的值,并且我已经检查过并且这些值在它们到达此xsl之前按顺序正确填充,所以我必须对我如何实现“和”的方法有所不妥算子在这里。有人能看出问题是什么吗?我已经尝试在每个条件周围放置括号,围绕整个测试等等,它仍然无效。

提前致谢

编辑1: 根据请求输入xml示例。实际的xml包含更多元素,但我需要的关键元素如下:

 <orderItem xmlns="http://gatewayNamespace"> 
     <processName>orderResetPilotPassword</processName>        
     <orderId>12345</orderId>
     <accountId>56789</accountId>
     <emailAddress>test@gmail.com</emailAddress>
     <UsingOldSip>true</UsingOldSip>
 </orderItem>

0 个答案:

没有答案