我有两个循环,想要计算案例OK
和NotOK
的迭代以及xslt
文件中的整体案例。
我怎么这么冷?如果我想知道两次迭代的总和,我怎么写呢?
我的For循环如下:
<xsl:for-each select="test">
<xsl:variable name="LinkName" select="attribute::name"/>
<tr>
<th style="text-align:left;vertical-align:top;position:"><a name="{$LinkName}"><xsl:value-of select="$LinkName"/></a></th>
<xsl:for-each select="descendant::node()">
<xsl:choose>
<xsl:when test="attribute::state='NotOK'">
<tr>
<td bgcolor="red"><xsl:value-of select="description"/></td>
</tr>
</xsl:when>
<xsl:when test="attribute::state='OK'">
<tr>
<td bgcolor="lime"><xsl:value-of select="description"/></td>
</tr>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</tr>
</xsl:for-each>
更新
<table>
<tr bgcolor="coral">
<th>Test cases</th>
<th>Info</th>
</tr>
<xsl:for-each select="test">
<xsl:variable name="Summation"/>
<xsl:variable name="LinkIt" select="@name"/>
<xsl:choose>
<xsl:when test="descendant::node()/@state='NotOK'">
<tr>
<td bgcolor="red"><a href="#{$LinkIt}" title="click for Information"><xsl:value-of select="$LinkIt"/></a></td>
<td>
<xsl:value-of select="count(descendant::node()[@state='NotOK'])"/> of <xsl:value-of select="count(descendant::node()[@state='OK']) + count(descendant::node()[@state='NotOK'])"/>
</td>
</tr>
</xsl:when>
<xsl:when test="descendant::node()/attribute::state='OK'">
<tr>
<td bgcolor="lime"><a href="#{$LinkIt}" title="click for Information"><xsl:value-of select="$LinkIt"/></a></td>
<td>
---
</td>
</tr>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</table>
答案 0 :(得分:0)
for-each
不是循环。如果要计算test
元素的所有后代节点,则只需使用<xsl:value-of select="count(test/descendant::node())"/>
。您还可以向XPath表达式添加谓词,例如count(test/descendant::node()[attribute::state='NotOK'])
。
在<xsl:for-each select="test">
内部节点内部是一个test
元素,因此任何计数表达式都应该与...相关。 count(descendant::node()[attribute::state='NotOK'])
。