2012-02-23 25 views
2

私は、ゲーム結果(チームと最終得点)のXMLファイルをどのように取るかを決定するために数日間苦労していて、各チームが勝った回数、失われた回数または紐付きを示すチーム順位リストを生成しています。結果も合計勝利でソートする必要がありますが、結果で並べ替えるだけでなく、勝敗を計算する良い方法を見つけることさえできません。私はそれがmuenchianのグループ化を伴わなければならないことを知っています、そして、私はすべての別個のチームを見つける部分をコーディングしましたが、そこからどこに行くのか困っています。どんな助けでも大いに感謝します。XSLT muenchianのグループ化を使用してスポーツチーム順位(勝敗)を計算しますか?

games.xml

<?xml version="1.0" encoding="UTF-8"?> 

<?xml-stylesheet type="text/xsl" href="games.xsl"?> 

<Games> 

    <Game> 
    <Home>Team A</Home> 
    <Away>Team B</Away> 
    <Home_Score>20</Home_Score> 
    <Away_Score>15</Away_Score> 
    </Game> 

    <Game> 
    <Home>Team C</Home> 
    <Away>Team D</Away> 
    <Home_Score>12</Home_Score> 
    <Away_Score>18</Away_Score> 
    </Game> 

    <Game> 
    <Home>Team A</Home> 
    <Away>Team C</Away> 
    <Home_Score>8</Home_Score> 
    <Away_Score>8</Away_Score> 
    </Game> 

    <Game> 
    <Home>Team B</Home> 
    <Away>Team D</Away> 
    <Home_Score>6</Home_Score> 
    <Away_Score>14</Away_Score> 
    </Game> 

    <Game> 
    <Home>Team D</Home> 
    <Away>Team C</Away> 
    <Home_Score>9</Home_Score> 
    <Away_Score>11</Away_Score> 
    </Game> 

    <Game> 
    <Home>Team C</Home> 
    <Away>Team A</Away> 
    <Home_Score>13</Home_Score> 
    <Away_Score>13</Away_Score> 
    </Game> 

</Games> 

games.xsl

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <!-- Key for identifying teams --> 
    <xsl:key name="unique-teams" match="/Games/Game" use="Home" /> 

    <xsl:template match="/"> 
    <html> 
    <head> 
    <title>Team Standings</title> 
    </head> 
    <body> 

     <!-- Get distinct teams, sort by team name --> 
     <xsl:apply-templates select="//Game[generate-id() = generate-id(key('unique-teams', Home)[1])]"> 
      <xsl:sort select="Home" /> 
     </xsl:apply-templates> 

    </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="Game"> 

    <!-- Current team --> 
    <xsl:variable name="selectedteam" select="Home" /> 

    <!-- Output each unique team name to the screen --> 
    <h1><xsl:value-of select="$selectedteam"/></h1> 

    <!-- Loop through all games to calculate totals??? --> 
    <xsl:for-each select="//Game">  
    </xsl:for-each> 

    </xsl:template> 

</xsl:stylesheet> 
+0

サムJ.は、あなたに有益な私の答えましたか? –

答えて

2

あなたはこのような何かをしたい(XSLT 1.0):

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:key name="kTeamByName" match="Home|Away" use="."/> 

<xsl:template match="/*"> 

<table border="1"> 
    <tr> 
    <td>Team</td><td>W</td><td>D</td><td>L</td> 
    </tr> 
     <xsl:apply-templates select= 
     "(*/Home | */Away) 
     [generate-id() 
     = 
     generate-id(key('kTeamByName', .)[1]) 
     ] 
     "> 
     <xsl:sort data-type="number" order="descending" select= 
     "count(key('kTeamByName', .) 
       [self::Home 
       and 
        ../Home_Score > ../Away_Score 
       or 
        self::Away 
       and 
        ../Away_Score > ../Home_Score 
       ] 
      ) 
     "/> 

     </xsl:apply-templates> 
    </table> 
</xsl:template> 

<xsl:template match="Home|Away"> 
    <tr> 
    <td> 
    <xsl:value-of select="."/> 
    </td> 
    <td> 
    <xsl:value-of select= 
    "count(key('kTeamByName', .) 
       [self::Home 
       and 
        ../Home_Score > ../Away_Score 
       or 
        self::Away 
       and 
        ../Away_Score > ../Home_Score 
       ] 
      )"/> 
    </td> 
    <td> 
    <xsl:value-of select= 
    "count(key('kTeamByName', .) 
       [../Home_Score = ../Away_Score] 
      )"/> 
    </td> 
    <td> 
    <xsl:value-of select= 
    "count(key('kTeamByName', .) 
       [self::Home 
       and 
        ../Away_Score > ../Home_Score 
       or 
        self::Away 
       and 
        ../Home_Score > ../Away_Score 
       ] 
      )"/> 
    </td> 
    </tr> 
</xsl:template> 

<xsl:template match="text()"/> 
</xsl:stylesheet> 

この変換が提供されるXML文書に適用される:指名手配、正しい結果が生産される

<Games> 
    <Game> 
     <Home>Team A</Home> 
     <Away>Team B</Away> 
     <Home_Score>20</Home_Score> 
     <Away_Score>15</Away_Score> 
    </Game> 
    <Game> 
     <Home>Team C</Home> 
     <Away>Team D</Away> 
     <Home_Score>12</Home_Score> 
     <Away_Score>18</Away_Score> 
    </Game> 
    <Game> 
     <Home>Team A</Home> 
     <Away>Team C</Away> 
     <Home_Score>8</Home_Score> 
     <Away_Score>8</Away_Score> 
    </Game> 
    <Game> 
     <Home>Team B</Home> 
     <Away>Team D</Away> 
     <Home_Score>6</Home_Score> 
     <Away_Score>14</Away_Score> 
    </Game> 
    <Game> 
     <Home>Team D</Home> 
     <Away>Team C</Away> 
     <Home_Score>9</Home_Score> 
     <Away_Score>11</Away_Score> 
    </Game> 
    <Game> 
     <Home>Team C</Home> 
     <Away>Team A</Away> 
     <Home_Score>13</Home_Score> 
     <Away_Score>13</Away_Score> 
    </Game> 
</Games> 

<table border="1"> 
    <tr> 
     <td>Team</td> 
     <td>W</td> 
     <td>D</td> 
     <td>L</td> 
    </tr> 
    <tr> 
     <td>Team D</td> 
     <td>2</td> 
     <td>0</td> 
     <td>1</td> 
    </tr> 
    <tr> 
     <td>Team A</td> 
     <td>1</td> 
     <td>2</td> 
     <td>0</td> 
    </tr> 
    <tr> 
     <td>Team C</td> 
     <td>1</td> 
     <td>2</td> 
     <td>1</td> 
    </tr> 
    <tr> 
     <td>Team B</td> 
     <td>0</td> 
     <td>0</td> 
     <td>2</td> 
    </tr> 
</table> 
+0

素敵な、完全な例をありがとうございました。 XSLは私が使用している他の言語と比較して私にとってまだまだ外国語ですので、助けていただきありがとうございます。 –

+0

@ Samj。、ようこそ。 –

関連する問題