如何评估XSLT表达式并按条件跳过节点?

时间:2018-05-24 09:16:14

标签: xslt saxon

如何在xslt属性上添加评估,并根据该评估的条件跳过for-each节点?

<some>
    <deep>
        <level availability="10" code="A"/>
    </deep>
</some>


<xsl:template match="some">
    <xsl:for-each select="//deep//level">
        <xsl:value-of select=".//@code, .//@availability" separator=";"/>
    <xsl:for-each>
</xsl:template>

问题:如果availability < 5,我该怎么跳过?

1 个答案:

答案 0 :(得分:1)

而不是考虑&#34;跳过&#34;元素,考虑要选择的内容,然后在选择的节点之后在方括号中添加条件

试试这个模板......

<xsl:template match="some">
    <xsl:for-each select="deep/level[number(@availability) ge 5]">
        <xsl:value-of select="@code, @availability" separator=";"/>
    </xsl:for-each>
</xsl:template>

请注意//将搜索所有后代节点,而不仅仅是直接子节点,我不确定您需要这些节点。