私は以下のようなxmlファイルを持っており、XSLT 1.0を使って正しいチームと選手をグループ化したい。しかし、関連するチームの下に正しいプレイヤーを表示する代わりに、すべてのチームの下にすべてのプレーヤーを表示します。異なるレベルのmuenchianグループ化ノード
ルート要素内に異なるノードセットがあり、グループ化が機能しない可能性があることはわかっていますが、これが可能かどうかはわかりませんが、muenchianグループの例はすべて単一のノードセットルート要素の内部。
XML
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="football.xslt"?>
<football>
<!-- team details go here -->
<teams>
<team teamCode="#ASNL">
<teamName>Arsenal</teamName>
<stadium>Emirates Stadium</stadium>
<location>North London</location>
</team>
<team teamCode="#NUTD">
<teamName>Newcastle United</teamName>
<stadium>St James' Park</stadium>
<location>Newcastle Upon Tyne</location>
</team>
</teams>
<!-- end of teams -->
<!-- player details go here -->
<players>
<player teamID="#ASNL">
<playerFirstName>Hector</playerFirstName>
<playerSurname>Bellerin</playerSurname>
<position>RB</position>
<goals>3</goals>
<assists>5</assists>
</player>
<player teamID="#ASNL">
<playerFirstName>Mesut</playerFirstName>
<playerSurname>Ozil</playerSurname>
<position>CAM</position>
<goals>10</goals>
<assists>20</assists>
</player>
<player teamID="#NUTD">
<playerFirstName>Papiss</playerFirstName>
<playerSurname>Cisse</playerSurname>
<position>CF</position>
<goals>15</goals>
<assists>5</assists>
</player>
<player teamID="#NUTD">
<playerFirstName>Tim</playerFirstName>
<playerSurname>Krul</playerSurname>
<position>GK</position>
<goals>0</goals>
<assists>3</assists>
</player>
</players>
<!-- end of players -->
</football>
XSLT
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:key name="teamKey" match="team" use="@teamCode"/>
<xsl:template match="/">
<xsl:for-each select="/football/teams/team[generate-id(.)=generate-id(key('teamKey', @teamCode)[1])]">
<xsl:sort select="teamName"/>
<teamDetails>
<br />
<b>Team Name: </b>
<xsl:value-of select="teamName"/>
<br />
<b>Stadium: </b>
<xsl:value-of select="stadium"/>
<br />
<b>Location: </b>
<xsl:value-of select="location"/>
<br />
</teamDetails>
<table>
<br />
<tr>
<th>First Name</th>
<th>Surname</th>
<th>Position</th>
<th>Goals</th>
<th>Assists</th>
</tr>
<xsl:for-each select="/football/players/player[key('teamKey', @teamID)]">
<tr>
<td>
<xsl:value-of select="playerFirstName"/>
</td>
<td>
<xsl:value-of select="playerSurname"/>
</td>
<td>
<xsl:value-of select="position"/>
</td>
<td>
<xsl:value-of select="goals"/>
</td>
<td>
<xsl:value-of select="assists"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
これは正常に動作しますが、私は、リレーショナルキー方式を好みました。ありがとう – nod64