为什么这个XSLT循环迭代两次?

时间:2015-07-01 20:07:47

标签: xslt

我有以下XSLT代码段:

                <xsl:for-each
                    select="distinct-values(/summary/results[@count eq $currentResult]/simulator/host/tps)">


                    <th>
                        <small>
                            TPS Avg

                            <br></br>
                        </small>
                    </th>
                    <th>
                        <small>
                            TPS 95th%tile

                            <br></br>
                        </small>
                    </th>

                </xsl:for-each>

因为,我使用了distinct-values,我希望这可以在循环中迭代一次,但是迭代两次。即使明显的值不能正常工作,两次也没有任何意义,因为有 3 不同的“tps&#39;在XML文档中。任何想法都赞赏......

1 个答案:

答案 0 :(得分:0)

节点上的

distinct-values

distinct-values(/summary/results[@count eq $currentResult]/simulator/host/tps

与原子值distinct-values不同:

distinct-values(/summary/results[@count eq $currentResult]/simulator/host/tps/avg/text()

使用节点时,该节点的子节点必须相同才能从XML树中提取一个条目。

请考虑以下事项:

         <tps>
           <avg>8.99</avg>
           <percentile>11.0</percentile>
        </tps>

        <tps>
           <avg>8.99</avg>
           <percentile>11.0</percentile>
        </tps>

        <tps>
           <avg>8.99</avg>
           <percentile>10.0</percentile>
        </tps>

您可能认为select-distinct只返回<tps>的一个条目,但在这种情况下它会考虑孩子。在上面的例子中,有 2 个不同的节点:avg和百分位数在两个节点中是相同的。这就是为什么它每次两次循环。