在xsl中的现有条件中合并某些条件



让我先开始下面这个问题,我问的可能是重复的问题,但我在一件事上被困住了。我已经尽力了,需要你们的建议,请指教。

如下所示,您可以看到我在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'" />  

请告知如何将这些变化纳入现有条件。

xsl:choose可以有多个xsl:when元素:

它由一系列xsl:when元素和可选元素组成xsl:否则元素。每个xsl:when元素只有一个属性,Test,它指定一个表达式。xsl:when和的内容否则elements是模板。当xsl:choose元素为处理后,每个xsl:when元素依次进行测试,由对表达式求值并将结果对象转换为布尔值,就像通过调用布尔函数一样。的内容第一个,且只有第一个,当test为true的元素是实例化。如果没有xsl:when为真,则xsl: else的内容元素被实例化。如果没有xsl:when element为真,则没有

如果元素存在,则不创建任何内容。

只需添加新的ERROR条件作为另一个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>  

只需添加<xsl:when>子句,作为<xsl:choose>的新子句:

<xsl:choose>
   <xsl:when test="$legReferenceVar != $ReturnLegVar/@legIdentifier">
      <xsl:text>ERROR</xsl:text>
   </xsl:when>
   ...etc.

相关内容

  • 没有找到相关文章

最新更新