为什么XPath count()总是返回相同的值?

时间:2015-02-05 16:14:44

标签: xml xslt xpath

我正在创建一个XSL文件,该文件对XML文档进行了大量的查询XPath,并且我有一些字段,我必须计算这样的字段的总数,例如字段簿(已发布的书籍数)。

XML树的示例:

<DADOS-AUTOR NOME="Rui Carlos Correia" ID="267">
    <PRODUCAO-BIBLIOGRAFICA>
        <TRABALHOS-EM-EVENTOS>
             <TRABALHO-EM-EVENTOS.......
        <ARTIGOS-PUBLICADOS>
             <ARTIGO-PUBLICADO..........

我有这个XSL文件:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <HTML>
      <BODY>
        <H1>Lista de Autores</H1>
        <TABLE border="1">
          <TR>
            <TD><B>Nome do Autor</B></TD>
            <TD><B>ID do Autorr</B></TD>
            <TD><B>Publicações de Artigos</B></TD>
          </TR>
          <xsl:for-each select="//DADOS-AUTOR">
            <TR>
              <TD><xsl:value-of select="@NOME"/></TD>
              <TD><xsl:value-of select="@ID"/></TD>
              <TD><xsl:value-of select="count(//ARTIGO-PUBLICADO)"/></TD>
            </TR>
          </xsl:for-each>
        </TABLE>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>

问题是函数计数必须返回所有作者的文章总数(我总共有20位作者),但每个作者行的表格中显示的数字总是相同的。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

更改

count(//ARTIGO-PUBLICADO)

count(.//ARTIGO-PUBLICADO)

如果您只想计算当前ARTIGO-PUBLICADO上下文元素下的DADOS-AUTOR元素,而不是计算整个文档中的所有ARTIGO-PUBLICADO元素。