计算xsl中的节点

时间:2015-01-28 07:17:32

标签: xml xslt

我的xml文件是这样的:

  <?xml version="1.0" encoding="UTF-8"?> 
  <?xml-stylesheet type="text/xsl" href="form.xsl"?>
  <Letter xmlns:xsi="http://www.irica.com/ECEP/1383-12/SendSchema-instance" xsi:noNamespaceSchemaLocation="file:ECEP_Letter.xsd">    
   ...
    <Keywords>
        <Keyword>A</Keyword>
        <Keyword>B</Keyword>
        <Keyword>C</Keyword>
 </Keywords>
 </Letter>

现在我想计算Keyword的数量并将它们放在这样的表中:

否。 |关键字

1 |甲

2 |乙

3 | ç

我到目前为止编写了这段代码:

  ...
  </table>
 <h2>keywords: <xsl:value-of select="count(/Letter/Keywords/Keyword)"/></h2>
 <table border="2">
    <tr >
    <th style="text-align:right">No.</th>
    <th style="text-align:right">keyword</th>

  </tr>
     <xsl:for-each select="Letter/Keywords/Keyword">

    <tr>
     <td><xsl:value-of select="Keyword" /></td>
      <td><xsl:value-of select="."/></td>

  </tr>
  </xsl:for-each>
</table>
...

它会打印关键字的总数,但在表格中仅打印ABC,但不打印数字。

2 个答案:

答案 0 :(得分:1)

我没有看到你真的想计算他们 - 只是数字他们,这可以通过以下方式轻松完成:

...
<xsl:for-each select="Letter/Keywords/Keyword">
    <tr>
        <td><xsl:value-of select="position()"/></td>
        <td><xsl:value-of select="."/></td>
    </tr>
</xsl:for-each>
...

答案 1 :(得分:0)

而不是这个

<td><xsl:value-of select="."/></td>

这样做

<xsl:value-of select="position()"/>