Thomas J.S.: Selektion verschiedener Felder in einem XML Script - Nachtrag

Beitrag lesen

Hallo,

Im XSL habe ich etwas nicht berücksichtigt.
Untenstehend eine korrigierte Version.

Grüße
Thomas

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="fahrzeugtypMonat" match="statsitem" use="concat(Month, '+', ObjectID)" />
<xsl:key name="fahrzeugtyp" match="statsitem" use="ObjectID" />

<xsl:template match="/">
<html>
<head>
 <title>Click und View</title>
</head>
<body>
 <xsl:apply-templates />
</body>
</html>
</xsl:template>

<xsl:template match="stats">
 <table width="600" border="1">
  <tr>
   <td>Name</td>
   <td>Year</td>
   <td>Month</td>
   <td>Print</td>
   <td>View</td>
  </tr>
  <xsl:for-each select="statsitem[generate-id() = generate-id(key('fahrzeugtyp', ObjectID)[1])]">
   <xsl:sort select="Name" />
   <xsl:variable name="current" select="." />
    <xsl:for-each select="key('fahrzeugtyp', ObjectID)[generate-id(.) = generate-id(key('fahrzeugtypMonat', concat(Month, '+', ObjectID))[1])]">
     <xsl:sort select="Month" data-type="number" />
       <tr>
        <td><xsl:value-of select="Name" /></td>
        <td><xsl:value-of select="Year" /></td>
        <td><xsl:value-of select="Month" /></td>
        <xsl:for-each select="key('fahrzeugtypMonat', concat(Month, '+', ObjectID))">
         <td><xsl:value-of select="Clicks" /></td>
        </xsl:for-each>
       </tr>
    </xsl:for-each>
  </xsl:for-each>
 </table>
</xsl:template>

</xsl:stylesheet>

-----------------------

Ausgabe z.B.:
-----------------------
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
<title>Click und View</title>
</head>
<body>
<table width="600" border="1">
<tr>
<td>Name</td>
<td>Year</td>
<td>Month</td>
<td>Print</td>
<td>View</td>
</tr>
<tr>
<td>Fiat UNO</td>
<td>2005</td>
<td>1</td>
<td>1</td>
<td>15</td>
</tr>
<tr>
<td>Fiat UNO</td>
<td>2005</td>
<td>3</td>
<td>13</td>
<td>10</td>
</tr>
<tr>
<td>Trabi</td>
<td>2005</td>
<td>1</td>
<td>11</td>
<td>33</td>
</tr>
<tr>
<td>Trabi</td>
<td>2005</td>
<td>11</td>
<td>19</td>
<td>20</td>
</tr>
<tr>
<td>Trabi</td>
<td>2005</td>
<td>12</td>
<td>12</td>
<td>150</td>
</tr>
</table>
</body>
</html>