2015-02-05 120 views
0

我创建了一个查询XPath到一个XML文档的XSL文件,并且我有一些字段,例如字段簿(发布的书籍数量),我必须计算这些字段的总数。在XML树为什么XPath count()总是返回相同的值?

例子:

<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

请发布足够的代码(XML + XSLT)以使我们能够重现此问题。 – 2015-02-05 17:36:52

回答

1

变化

count(//ARTIGO-PUBLICADO) 

count(.//ARTIGO-PUBLICADO) 
如果你想只计算当前 DADOS-AUTOR上下文元素下的 ARTIGO-PUBLICADO元素,而不是计算整个文档中的所有元素 ARTIGO-PUBLICADO

+0

谢谢,我已经改变了计数(.//ARTIGO-PUBLICADO)的计数功能,但现在在该字段中显示为0。探索所有的XML文件的作者“锐卡洛斯Correia”有3篇文章,例如下一个作者“大卫Filipe Gouveia”有6篇文章...但这个函数返回0. – satbr 2015-02-05 17:18:56

+0

你将不得不遵循@ michael .hor257k并编辑您的问题以包含显示问题的[** Minimal,Complete,and Verifiable Example(MCVE)**](http://stackoverflow.com/help/mcve)。谢谢。 – kjhughes 2015-02-05 23:06:32