如何在xslt for-each中继续

jay*_*fch 6 xml xslt

如何做一个继续在XSLT for-each(不退出for-each,而是继续for-each

喜欢:

<xsl:for-each select="asd">

    <xsl:if test="$test1">
        <!--some stuff-->
        <xsl:if test="$test1A">
            <!--CONTINUE()-->
        </xsl:if>
    </xsl:if>

    <xsl:if test="$test2">
        <!--some stuff-->
        <!--CONTINUE()-->
    </xsl:if>

    <!--main stuff-->
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

jbo*_*son 0

XSL 中没有类似于 a 的构造continue。您将必须重组代码流程才能达到相同的效果。

我建议将整个循环体分解成更小的块,以尽量减少复合 if 的数量。

编辑:

这是使用完整复合 if 时的样子:

<xsl:for-each select="asd">
    <xsl:if test="$test1">
        <!--some stuff (1)-->
    </xsl:if>
    <xsl:if test="not($test1 and $test1A)">
        <xsl:choose>
            <xsl:when test="$test2">
                <!--some stuff (2)-->            
            </xsl:when>
            <xsl:otherwise>
                <!--main stuff (3)-->    
            </xsl:otherwise>
        </xsl:choose>
    </xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

每次需要时,continue您都需要将以下所有代码包装在防护中。

该代码作为单个语句更难阅读,如果这些 if 中有大量代码,您最好将它们分解为自己的模板并调用它们。