如何理解这个xsl模板选择



如何理解这个代码块,

<xsl:for-each select="testsuite">
  <xsl:apply-templates select="."/>
</xsl:for-each>

在下面使用

<xsl:template match="testsuites">
    <table border="1" width="100%">
    <tr bgcolor="#9acd32">
      <th align="left">module</th>
      <th align="left">tests</th>
      <th align="left">time</th>
    </tr>
    <tr>
      <td><xsl:value-of select="@name"/></td>
      <td><xsl:value-of select="@tests"/></td>
      <td><xsl:value-of select="@time"/></td>
    </tr>
    </table>
    <br/>
    <xsl:for-each select="testsuite">
      <xsl:apply-templates select="."/>
    </xsl:for-each>
</xsl:template>

根据上面的代码,<xsl:apply-templates/>应用的模板是什么?关于这个问题,你能提供一些线索吗?

我将高度重视你的帮助。

如hr_117所示,出于所有实际目的,代码

<xsl:for-each select="testsuite">
  <xsl:apply-templates select="."/>
</xsl:for-each>

相当于

<xsl:apply-templates select="testsuite"/>

它实际上并不是100%等效的,所以在重写它之前要稍微小心:在第一种情况下,对所选模板中的position()的调用将始终返回1,而在第二种情况下它将返回测试套件在同级测试套件元素集中的位置。然而,这并不重要。

<xsl:for-each select="testsuite">语句迭代当前节点(即testsuites)的所有子节点。
for-each中的<xsl:apply-templates select="."/>将"触发"testsuite模板(未显示)。

因此,这将调用testsuite模板(用于子级testsuite)。只有当testsuites节点内部有testsuite节点时,这才会起作用。

CCD_ 12也不需要,CCD_。

相关内容

  • 没有找到相关文章

最新更新