我给出以下XML,随机数量的" note"元素:
<Notes>
<Note>
<Size>400000</Size>
</Note>
<Note>
<Size>200000</Size>
</Note>
<Note>
<Size>500000</Size>
</Note>
</Notes>
我想检查一下,如果这些音符的尺寸元素中的一个等于或更大,则为500000。如果是这样,我想调用主模板。如果没有,我想做其他事情。
我遇到的问题是:如果我在for-each循环中具有IF-then逻辑,那么我会多次调用模板。由于XSLT中没有断路功能,因此我想使用一个变量,如果满足条件,我将设置为TRUE,如果将模板设置为true,我会称其为" for-east"。但这不是我真正担心的最好的方法,您怎么看?
预先感谢。
不需要for-EAPE循环。像这样的事情将做您想要的事情:
<xsl:template match="Notes">
<xsl:choose>
<xsl:when test="number(descendant::Size/text()) > 500000">
<xsl:call-template name="process Note"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="add attribute to Note"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>