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