2015-02-05 3 views
0

XML 문서에 여러 개의 쿼리 XPath를 만드는 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)를 게시하십시오. –

답변

1

변경

count(//ARTIGO-PUBLICADO) 

count(.//ARTIGO-PUBLICADO) 

오히려 전체 문서의 모든 ARTIGO-PUBLICADO 요소를 계산보다 현재 DADOS-AUTOR 컨텍스트 요소 아래에만 ARTIGO-PUBLICADO 요소를 계산하려면

합니다.

+0

감사합니다. count (.// ARTIGO-PUBLICADO)의 카운트 기능을 변경했지만 현재 필드에 0이 표시됩니다. 모든 xml 문서를 탐색하는 autor "Rui Carlos Correia"에는 3 개의 기사가 있습니다. 예를 들어 다음 저자 인 David Filipe Gouveia는 6 개의 기사를 가지고 있지만이 함수는 0을 반환합니다. – satbr

+0

@michael의 조언을 따라야합니다. .hor257k을 입력하고 문제를 나타내는 [** 최소, 완전하고 검증 가능한 예제 (MCVE) **] (http://stackoverflow.com/help/mcve)를 포함하도록 질문을 편집하십시오. 감사. – kjhughes

관련 문제