Dixi86: Knoten zählen wenn Attribut-Wert gleich Variable ist

Beitrag lesen

Hallo selfhtml-Forum,

Ich habe ein Frage bzgl XPath... Ich möchte in folgender XML, die hit-Knoten pro Attribut-Wert von @page zählen. Die Attribut-Werte von @page bekomme ich aus dem Attribut @id unter dem Knoten page. Die Anzahl page-Knoten sind dynamisch können aber je @id nur einmal vorkommen, die Anzahl der hit-Knoten pro XML sind auch dynamisch und dürfen je @page merhmals vorkommen...
Ich möchte jetzt die Anzahl der hit-Knoten pro @pages zählen! Ich versuche in meinem Lösungs-Ansatz jetzt, dass ich die Anzahl des hit-Knoten zählen, wenn die @id und @pages gleich sind... es Funktioniert allerdings nicht so richig...

  
<?xml version="1.0" encoding="UTF-8" ?>  
<report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
	<document>  
		<doc_info>  
			<filename>Referenz.pdf</filename>  
			<created>12.04.2012 16:35</created>  
		</doc_info>  
		<pages>  
			<page id="PAG1"/>  
			<page id="PAG2"/>  
			<page id="PAG3"/>  
		</pages>  
	</document>  
	<results>  
		<hits>  
			<hit page="PAG1"></hit>  
			<hit page="PAG1"></hit>  
			<hit page="PAG1"></hit>  
			<hit page="PAG1"></hit>  
			<hit page="PAG2"></hit>  
			<hit page="PAG2"></hit>			  
			<hit page="PAG2"></hit>  
			<hit page="PAG3"></hit>  
			<hit page="PAG3"></hit>  
			<hit page="PAG3"></hit>  
			<hit page="PAG3"></hit>  
			<hit page="PAG3"></hit>  
		</hits>  
	</results>  
</report>
<?xml version="1.0" encoding="utf-8"?>  
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
    <xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>  
     <xsl:template match="dateisammlung">  
        <html xmlns="http://www.w3.org/1999/xhtml">  
            <head>  
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
                <title>Test</title>  
            </head>  
            <body>  
            	<font face="Arial" size="-1">  
            	<table border="1">  
            	<tr>  
            		<td align="center">Datum Auftragseingang</td>  
            		<td align="center">Dateiname</td>  
            		<td align="center">Seiten</td>  
					<td align="center">Anzahl Objekte/Seite</td>  
            	</tr>  
              		<xsl:apply-templates select="datei/document(@url)//results"/>  
                </table>  
                </font>  
            </body>  
        </html>  
    </xsl:template>  
  
    <xsl:template match="report//results">  
               	 	<tr>  
    	<!-- Auftragseingang -->  
    			   		<td><xsl:value-of select="//document/doc_info/created"/></td>  
    	<!-- Dateiname -->  
    			   		<td><xsl:value-of select="//document/doc_info/filename"/></td>  
    	<!-- Seitenanzahl -->  
    			   		<td><xsl:value-of select="//document/pages/count(//page)"/></td>  
    			   		<td><xsl:value-of select="count(//hit/@page)"/></td> 			   		  
  
  
  
		    	<!-- Ist Anzahl der Objekte -->  
 			<xsl:for-each select="//pages/page">  
 			 			 <tr>  
 			<xsl:variable name="Seite">  
  
 				 			<xsl:value-of select="./@id"/>  
  
 			</xsl:variable>  
 			 			  
						<td></td>  
						<td></td>  
    					<td><xsl:value-of select="$Seite"/></td>  
  
    					<td><xsl:if test="$Seite=//hits/hit/@page"><xsl:value-of select="count(//hit/@page='$Seite')"/></xsl:if></td>  
    						  
    					</tr>  
    					  
			</xsl:for-each>  
			</tr>  
    </xsl:template>  
  
  
  
</xsl:stylesheet>

Da ich mehrere XML-Dateien habe, gibt es noch eine weitere XML die auf die XML-Dateien verweist...

<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>  
  
<dateisammlung>  
  
<datei url="/C:/Users/test.xml"/>  
  
</dateisammlung>

Könnt ihr mir evtl. helfen... Ich verstehe nicht, wie ich alle hits bei gleicher @id und @page je durchgang zählen kann...?!

Vielen Dank schonmal..!

Gruß,
Dixi86