whine: group by mit XSLT 1.0

Beitrag lesen

Moin!

Folgende XML-Struktur versuche ich zu gruppieren:

<Instruction>
  <Fact>A</Fact>
  <Locations>			
     <Location>
        <Coordinates>50,14</Coordinates>
  			<ChartsAffected>
 				  <Chart>100</Chart>
 				  <Chart>101</Chart>					
          <Chart>103</Chart>
			  </ChartsAffected>											
     </Location>
     <Location>
       <Coordinates>52,16</Coordinates>
		   <ChartsAffected>
					<Chart>100</Chart>
  				<Chart>101</Chart>
  				<Chart>98</Chart>
			 </ChartsAffected>											
    </Location>
 </Locations>	
</Instruction>
<Instruction>
  <Fact>B</Fact>
  <Locations>			
     <Location>
      <Coordinates>50.6,14.4</Coordinates>
  			<ChartsAffected>
 				  <Chart>50</Chart>
 				  <Chart>77</Chart>					
          <Chart>98</Chart>
			  </ChartsAffected>											
     </Location>
     <Location>
     <Coordinates>50.7,14.5</Coordinates>
			 <ChartsAffected>
					<Chart>66</Chart>
					<Chart>77</Chart>
  				<Chart>100</Chart>
			 </ChartsAffected>											
    </Location>
 </Locations>	
</Instruction>

Rauskommen soll in HTML in etwa so etwas:

<table> 
  <tr> 
   <th>Chart</th> 
   <th>Fact</th> 
   <th>Location</th> 
  </tr> 
  <tr> 
   <td>100</td> 
   <td>A</td> 
   <td>50,14</td> 
  </tr> 
  <tr> 
   <td>100</td> 
   <td>A</td> 
   <td>52,16</td> 
  </tr>
  <tr> 
   <td>100</td> 
   <td>B</td> 
   <td>50.7,14.5</td> 
  </tr>
  <tr> 
   <td>101</td> 
   <td>A</td> 
   <td>50,14</td> 
 ...
  </tr>
</table>

Ich weiß, dass Muenchian Grouping das Mittel der Wahl ist, aber durch das Gruppieren der Charts über die Location und Instruction bekomme ich mit

<xsl:apply-templates select="Instruction/Locations/Location/ChartsAffected/[generate-id() = generate-id(key('groups', Chart)[1])]"/>

immer alles doppelt und dreifach ausgegeben. Ehrlich gesagt übersteigt das Muenchian Grouping meinen Horizont :( Und wenn ich es genau betrachte, ist es vielleicht auch gar kein Gruppieren, sondern mehr ein Umsortieren. Letztlich will ich sehen: Chart 100: Welche Facts an welchen Coordinates.

Weiß jemand Rat?

LG whine