XSLT 顺序处理

XSLT sequential processing

仅在 class xyz 内,我想检查两个 div 及其 class 名称。 如果 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

..等等.. 找到第一个很容易,但我该怎么做 "sequentially"?

可以在下面的 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>

第三个模板递归处理所有节点,从文档节点开始。前两个模板使用 'yes' 和 'no'.

为 @class 执行所需的输出