如何做一个继续在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)
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 中有大量代码,您最好将它们分解为自己的模板并调用它们。