你可以嵌套xsl:if在嵌套的xsl:when中,例如:
<xsl:choose>
<xsl:when test="param/@id = '1' " >
<xsl:if test="param/value = 'XML' ">
<xsl:when test="param/@id = '2' ">
<xsl:if test="param/value = 'HTTP' ">
<xsl:when test="param/@id = '3' ">
<xsl:if test="param/value = 'Y' ">
<xsl:call-template name="buildPayload"/>
</xsl:if>
</xsl:when>
</xsl:if>
</xsl:when>
</xsl:if>
</xsl:when>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)
可以使用它,还是可以将其简化为更紧凑的代码?
没有尝试它:我认为<xsl:when>不能在<xsl:if>没有另一个<xsl:choose>之间的子节点.但是,你想做什么?如果我看到了正确的话,你想要运行<call-template>当且仅当(param/@id='1' and param/value='XML') or (param/@id='2' and param/value='HTTP') or (param/@id='3' and param/value='Y')...尝试将其作为测试值:
<xsl:if test="(param/@id='1' and param/value='XML') or (param/@id='2' and param/value='HTTP') or (param/@id='3' and param/value='Y')">
<xsl:call-template name="buildPayload"/>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)