让我先从下面的问题开始,我要求的可能是一个问题,但我只是坚持一件事。我已尽力而为,需要你们的建议,请指教。
如下所示,您可以看到我在 XSLT 1.0 中定义的模板,并且某些条件也如下所示:
<xsl:template name="direction_emm_cashflowGDS">
<xsl:param name="TradeHeaderVar" />
<xsl:param name="ReturnSwapTradeVar" />
<xsl:param name="ReturnLegVar" />
<xsl:param name="InterestLegVar" />
<xsl:param name="legReferenceVar" />
<xsl:variable name="cdfPartyRef">
<xsl:value-of select="$TradeHeaderVar/bookingEntityPerspective" />
</xsl:variable>
<xsl:choose>
<xsl:when
test="($legReferenceVar=$ReturnLegVar/@legIdentifier and
$cdfPartyRef=$ReturnLegVar/payerPartyReference)
or
($legReferenceVar=$InterestLegVar/@legIdentifier and
$cdfPartyRef=$InterestLegVar/payerPartyReference)">
<xsl:value-of select="'Pay'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'Receive'" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
现在我根据指定的要求在xsl:when
组织了某些条件,现在要求略有变化。
那就是说:
如果$legReferenceVar=$ReturnLegVar/@legIdentifier
不相等,则在这种情况下需要显示选择的错误。
换句话说,如果$legReferenceVar != $ReturnLegVar/@legIdentifier
,则将错误消息显示为
<xsl:value-of select="'EEROR'" />
类似的情况是需求的另一个变化是,如果$legReferenceVar=$InterestLegVar/@legIdentifier
不相等,则需要显示错误选择。 $legReferenceVar != $InterestLegVar/@legIdentifier
然后将错误消息显示为
<xsl:value-of select="'EEROR'" />
请告知如何将这些变化纳入现有条件。
答案 0 :(得分:1)
只需添加一个<xsl:when>
条款与您的新条件,作为<xsl:choose>
的新子项:
<xsl:choose>
<xsl:when test="$legReferenceVar != $ReturnLegVar/@legIdentifier">
<xsl:text>ERROR</xsl:text>
</xsl:when>
...etc.
答案 1 :(得分:1)
xsl:choose可以有多个xsl:when元素:
它由一系列xsl:when元素组成,后跟可选项 xsl:otherwise元素。每个xsl:when元素都有一个属性, test,指定表达式。 xsl的内容:when和 xsl:otherwise元素是一个模板。当xsl:choose元素是 处理后,每个xsl:when元素依次进行测试 计算表达式并将结果对象转换为 boolean就像通过调用boolean函数一样。的内容 首先,只有第一个,xsl:when元素,其测试为真 实例化。如果没有xsl:when为true,则为xsl的内容:否则为 元素被实例化。如果没有xsl:when元素为真,则为否 xsl:otherwise元素存在,没有创建任何内容。
只需将新的错误条件添加为另一个xsl:when条件:
<xsl:template name="direction_emm_cashflowGDS">
<xsl:param name="TradeHeaderVar" />
<xsl:param name="ReturnSwapTradeVar" />
<xsl:param name="ReturnLegVar" />
<xsl:param name="InterestLegVar" />
<xsl:param name="legReferenceVar" />
<xsl:variable name="cdfPartyRef">
<xsl:value-of select="$TradeHeaderVar/bookingEntityPerspective" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$legReferenceVar != $ReturnLegVar/@legIdentifier
or $legReferenceVar != $InterestLegVar/@legIdentifier">
<xsl:value-of select="'ERROR'"/>
</xsl:when>
<xsl:when
test="($legReferenceVar=$ReturnLegVar/@legIdentifier
and $cdfPartyRef=$ReturnLegVar/payerPartyReference)
or
($legReferenceVar=$InterestLegVar/@legIdentifier
and $cdfPartyRef=$InterestLegVar/payerPartyReference)">
<xsl:value-of select="'Pay'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'Receive'" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>