XSLT顺序处理

时间:2016-12-21 12:32:24

标签: xslt sequential

仅在xyz类中,我想检查两个div及其类名。 如果classname =“yes”则输出'1'。 如果classname =“no”则输出'0'。

<div class="xyz">
    <div class="no"></div>
    <div class="yes"></div>
</div>

所需输出:0 1

<div class="xyz">
    <div class="yes"></div>
    <div class="yes"></div>
</div>

所需输出:1 1

..等.. 找到第一个很容易,但我如何“按顺序”进行?

1 个答案:

答案 0 :(得分:1)

递归处理可以像下面的XSLT-1.0代码一样使用:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text"/>

    <xsl:template match="div[@class='xyz']/div[@class='no']">
        <xsl:text>0 </xsl:text>
    </xsl:template>

    <xsl:template match="div[@class='xyz']/div[@class='yes']">
        <xsl:text>1 </xsl:text>
    </xsl:template>

    <xsl:template match="node()">
            <xsl:apply-templates select="node()"/>
    </xsl:template>
</xsl:transform>

第3个模板以文档节点开始递归处理所有节点。前两个模板使用'yes'和'no'为@class执行所需的输出。