If statement XSLT:如何模拟IF-ELSE子句

If statement XSLT:如何模拟IF-ELSE子句,if-statement,xslt,If Statement,Xslt,问题: IF COND1 = true { WHEN COND2 = TRUE { PRINT X1 } OTHERWISE { WHEN COND3 = TRUE {PRINT X2} OTHERWISE {PRINT X3} } } 我使用COND1和COND2和COND3,但它的打印值X1适用于所有条件。有人能告诉我如何应用上述场景吗 <xsl:if test="($Id='5')"&

问题:

IF COND1 = true
{
    WHEN COND2 = TRUE
    {
        PRINT X1
    }
    OTHERWISE 
    {
        WHEN COND3 = TRUE {PRINT X2}
        OTHERWISE {PRINT X3}
    }
}
我使用COND1和COND2和COND3,但它的打印值X1适用于所有条件。有人能告诉我如何应用上述场景吗

<xsl:if test="($Id='5')">
<xsl:choose>
 <xsl:when test="(Cond='') "></xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="(Cond='true')or(Cond='Y')">Y</xsl:when>                                                                                   
<xsl:otherwise>N</xsl:otherwise></xsl:choose>
</xsl:otherwise>    
</xsl:choose>
</xsl:if>

Y
N

XSLT中没有IF-ELSE。
但是您可以使用
——正如@michael.hor257k建议的那样——获得相同的结果

下面是与示例代码等效的伪代码:

<xsl:if test="COND1 = TRUE">
  <xsl:choose>
    <xsl:when test="COND2 = TRUE">
      PRINT X1
    </xsl:when>
    <xsl:otherwise>
      <xsl:choose>
        <xsl:when test="COND3 = TRUE">
          PRINT X2
        </xsl:when>
        <xsl:otherwise>
          PRINT X3
        </xsl:otherwise>
      </xsl:choose>
    </xsl:otherwise>
  </xsl:choose>
</xsl:if>

打印X1
打印X2
打印X3

XSLT中没有IF-ELSE。
但是您可以使用
——正如@michael.hor257k建议的那样——获得相同的结果

下面是与示例代码等效的伪代码:

<xsl:if test="COND1 = TRUE">
  <xsl:choose>
    <xsl:when test="COND2 = TRUE">
      PRINT X1
    </xsl:when>
    <xsl:otherwise>
      <xsl:choose>
        <xsl:when test="COND3 = TRUE">
          PRINT X2
        </xsl:when>
        <xsl:otherwise>
          PRINT X3
        </xsl:otherwise>
      </xsl:choose>
    </xsl:otherwise>
  </xsl:choose>
</xsl:if>

打印X1
打印X2
打印X3
这可能会对您有所帮助

<xsl:choose>                                                                                                                                                        
    <xsl:when test="($Id='5') and (Cond='')"></xsl:when>                                                                      
    <xsl:otherwise>
        <xsl:choose>
            <xsl:when test="(Cond='true') or (Cond='Y')">Y</xsl:when>
            <xsl:otherwise>N</xsl:otherwise>
        </xsl:choose>
    </xsl:otherwise>                             
</xsl:choose>

Y
N
这可能会对您有所帮助

<xsl:choose>                                                                                                                                                        
    <xsl:when test="($Id='5') and (Cond='')"></xsl:when>                                                                      
    <xsl:otherwise>
        <xsl:choose>
            <xsl:when test="(Cond='true') or (Cond='Y')">Y</xsl:when>
            <xsl:otherwise>N</xsl:otherwise>
        </xsl:choose>
    </xsl:otherwise>                             
</xsl:choose>

Y
N


了解
xsl:choose
说明。@michael.hor257k我已经使用xsl:choose-still问题没有解决请给我们看一个.@michael.hor257k我已经添加了有问题的示例。在编写时,Cond不是一个变量,而是作为节点处理的。如果您有一个名为Cond的变量并希望使用它,请编写
$Cond
了解
xsl:choose
指令。@michael.hor257k我使用过xsl:choose-still-problem-not solved请给我们看一个@michael.hor257k我添加了有问题的示例。在编写时,Cond不是一个变量,而是作为节点处理的。如果您有一个名为Cond的变量,并且想要使用它,请编写与我应用的解决方案相同的
$Cond
,您可以看到有问题的代码段。它不起作用。它将为每个条件打印X1。@Lipi:您还没有提供一个,因此我既不能批准也不能否认您的批评。我已经提供了有问题的代码段。请向下滚动问题@ZX485它不完整。它不是一个完整的样式表,您还没有提供源文档。我们无法运行它,因此无法调试它。我们不知道输入条件是什么。从给出的代码中,我看不出它怎么可能输出X1:所有分支都输出Y、N或什么都不输出。有人在没有留下评论的情况下否决了我的问题。这是荒谬的,如果他们不能解决这个问题,他们将否决它。同样的解决方案,我已经应用,你可以看到有问题的代码片段。它不起作用。它将为每个条件打印X1。@Lipi:您还没有提供一个,因此我既不能批准也不能否认您的批评。我已经提供了有问题的代码段。请向下滚动问题@ZX485它不完整。它不是一个完整的样式表,您还没有提供源文档。我们无法运行它,因此无法调试它。我们不知道输入条件是什么。从给出的代码中,我看不出它怎么可能输出X1:所有分支都输出Y、N或什么都不输出。有人在没有留下评论的情况下否决了我的问题。这是荒谬的,如果他们不能解决这个问题,他们将否决它。谢谢这个解决方案真的很有帮助。谢谢这个解决方案真的很有帮助。