我有一个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>