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 执行所需的输出
仅在 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 执行所需的输出