2016-09-18 9 views
0

私はXSLを学ぼうとしており、XML文書をテーブルに出力することを検討しています。私は間違っていることを知っている設定を入力する1行を得ることができますが、それは異なるプレイヤーからのレコードを結合しています。 PLAYERまたはTEAM_NAMEを選択しようとすると、レコードは取得されません。私はそれがどのようにそれぞれのものになるのか理解できないようです。それは何らかの理由で頭の中をちょうど向こうに行くことです。テーブルへのXSL出力

<?xml version="1.0" encoding="UTF-8"?> 
 
<xsl:stylesheet version="1.0" 
 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
 
<xsl:template match="/"> 
 
    <html> 
 
    <body> 
 
\t \t <h2>SEASON</h2> 
 
\t \t \t <table border="1"> 
 
\t \t \t \t <tr> 
 
\t \t \t \t \t <th>YEAR</th> 
 
\t \t \t \t \t <th>LEAGUE</th> 
 
\t \t \t \t \t <th>DIVISION</th> 
 
\t \t \t \t \t <th>TEAM_CITY</th> 
 
\t \t \t \t \t <th>TEAM_NAME</th> 
 
\t \t \t \t \t <th>GIVEN_NAME</th> 
 
\t \t \t \t \t <th>SURNAME</th> 
 
\t \t \t \t \t <th>POSITION</th> 
 
\t \t \t \t \t <th>GAMES</th> 
 
\t \t \t \t \t <th>GAMES_STARTED</th> 
 
\t \t \t \t \t <th>WINS</th> 
 
\t \t \t \t \t <th>LOSSES</th> 
 
\t \t \t \t \t <th>SAVES</th> 
 
\t \t \t \t \t <th>COMPLETE_GAMES</th> 
 
\t \t \t \t \t <th>SHUT_OUTS</th> 
 
\t \t \t \t \t <th>ERA</th> 
 
\t \t \t \t \t <th>INNINGS</th> 
 
\t \t \t \t \t <th>EARNED_RUNS</th> 
 
\t \t \t \t \t <th>HIT_BATTER</th> 
 
\t \t \t \t \t <th>WILD_PITCHES</th> 
 
\t \t \t \t \t <th>BALK</th> 
 
\t \t \t \t \t <th>WALKED_BATTER</th> 
 
\t \t \t \t \t <th>STRUCK_OUT_BATTER</th> 
 
\t \t \t \t \t <th>AT_BATS</th> 
 
\t \t \t \t \t <th>RUNS</th> 
 
\t \t \t \t \t <th>HITS</th> 
 
\t \t \t \t \t <th>DOUBLES</th> 
 
\t \t \t \t \t <th>TRIPLES</th> 
 
\t \t \t \t \t <th>"HOME_RUNS" /></th> 
 
\t \t \t \t \t <th>RBI</th> 
 
\t \t \t \t \t <th>STEALS</th> 
 
\t \t \t \t \t <th>CAUGHT_STEALING</th> 
 
\t \t \t \t \t <th>SACRIFICE_HITS</th> 
 
\t \t \t \t \t <th>SACRIFICE_FLIES</th> 
 
\t \t \t \t \t <th>ERRORS</th> 
 
\t \t \t \t \t <th>WALKS</th> 
 
\t \t \t \t \t <th>STRUCK_OUT</th> 
 
\t \t \t \t \t <th>HIT_BY_PITCH</th> 
 
\t \t \t \t </tr> 
 
\t \t \t \t <xsl:for-each select="/SEASON/LEAGUE/DIVISION/TEAM/TEAM_NAME"> 
 
\t \t \t \t <tr> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/YEAR" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/LEAGUE_NAME" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/DIVISION_NAME" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/TEAM_CITY" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/TEAM_NAME" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/GIVEN_NAME" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/SURNAME" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/POSITION" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/GAMES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/GAMES_STARTED" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/WINS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/LOSSES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/SAVES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/COMPLETE_GAMES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/SHUT_OUTS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/ERA" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/INNINGS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/EARNED_RUNS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/HIT_BATTER" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/WILD_PITCHES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/BALK" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/WALKED_BATTER" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/STRUCK_OUT_BATTER" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/AT_BATS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/RUNS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/HITS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/DOUBLES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/TRIPLES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/HOME_RUNS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/RBI" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/STEALS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/CAUGHT_STEALING" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/SACRIFICE_HITS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/SACRIFICE_FLIES" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/ERRORS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/WALKS" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/STRUCK_OUT" /></td> 
 
\t \t \t \t \t <td><xsl:value-of select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER/HIT_BY_PITCH" /></td> 
 
\t \t \t \t </tr> 
 
\t \t \t \t </xsl:for-each> 
 
\t \t \t </table> 
 

 
\t </body> 
 
</html> 
 

 
</xsl:template> 
 

 
</xsl:stylesheet>

<?xml version="1.0" encoding="UTF-8"?> 
 
<?xml-stylesheet type="text/xsl" href="test.xsl"?> 
 
<SEASON> 
 
\t <YEAR>1998</YEAR> 
 
\t 
 
\t <LEAGUE> 
 
\t \t <LEAGUE_NAME>National</LEAGUE_NAME> 
 

 
\t \t <DIVISION> 
 
\t \t \t <DIVISION_NAME>East</DIVISION_NAME> 
 
\t \t 
 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Florida</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Marlins</TEAM_NAME> 
 
\t \t \t 
 
\t \t \t \t <PLAYER> 
 
\t \t \t \t \t <GIVEN_NAME>Eric</GIVEN_NAME> 
 
\t \t \t \t \t <SURNAME>Ludwick</SURNAME> 
 
\t \t \t \t \t <POSITION>Starting Pitcher</POSITION> 
 
\t \t \t \t \t <GAMES>13</GAMES> 
 
\t \t \t \t \t <GAMES_STARTED>6</GAMES_STARTED> 
 
\t \t \t \t \t <WINS>1</WINS> 
 
\t \t \t \t \t <LOSSES>4</LOSSES> 
 
\t \t \t \t \t <SAVES>0</SAVES> 
 
\t \t \t \t \t <COMPLETE_GAMES>0</COMPLETE_GAMES> 
 
\t \t \t \t \t <SHUT_OUTS>0</SHUT_OUTS> 
 
\t \t \t \t \t <ERA>7.44</ERA> 
 
\t \t \t \t \t <INNINGS>32.2</INNINGS> 
 
\t \t \t \t \t <EARNED_RUNS>31</EARNED_RUNS> 
 
\t \t \t \t \t <HIT_BATTER>27</HIT_BATTER> 
 
\t \t \t \t \t <WILD_PITCHES>0</WILD_PITCHES> 
 
\t \t \t \t \t <BALK>2</BALK> 
 
\t \t \t \t \t <WALKED_BATTER>0</WALKED_BATTER> 
 
\t \t \t \t \t <STRUCK_OUT_BATTER>17</STRUCK_OUT_BATTER> 
 
\t \t \t \t \t </PLAYER> 
 

 
\t \t \t \t <PLAYER> 
 
\t \t \t \t \t <GIVEN_NAME>Brian</GIVEN_NAME> 
 
\t \t \t \t \t <SURNAME>Daubach</SURNAME> 
 
\t \t \t \t \t <POSITION>First Base</POSITION> 
 
\t \t \t \t \t <GAMES>10</GAMES> 
 
\t \t \t \t \t <GAMES_STARTED>3</GAMES_STARTED> 
 
\t \t \t \t \t <AT_BATS>15</AT_BATS> 
 
\t \t \t \t \t <RUNS>0</RUNS> 
 
\t \t \t \t \t <HITS>3</HITS> 
 
\t \t \t \t \t <DOUBLES>1</DOUBLES> 
 
\t \t \t \t \t <TRIPLES>0</TRIPLES> 
 
\t \t \t \t \t <HOME_RUNS>0</HOME_RUNS> 
 
\t \t \t \t \t <RBI>3</RBI> 
 
\t \t \t \t \t <STEALS>0</STEALS> 
 
\t \t \t \t \t <CAUGHT_STEALING>0</CAUGHT_STEALING> 
 
\t \t \t \t \t <SACRIFICE_HITS>0</SACRIFICE_HITS> 
 
\t \t \t \t \t <SACRIFICE_FLIES>0</SACRIFICE_FLIES> 
 
\t \t \t \t \t <ERRORS>0</ERRORS> 
 
\t \t \t \t \t <WALKS>1</WALKS> 
 
\t \t \t \t \t <STRUCK_OUT>5</STRUCK_OUT> 
 
\t \t \t \t \t <HIT_BY_PITCH>1</HIT_BY_PITCH> 
 
\t \t \t \t </PLAYER> 
 
\t \t \t </TEAM> 
 

 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Montreal</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Expos</TEAM_NAME> 
 
\t \t \t </TEAM> 
 

 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>New York</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Mets</TEAM_NAME> 
 
\t \t \t </TEAM> 
 

 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Philadelphia</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Phillies</TEAM_NAME> 
 
\t \t \t </TEAM> 
 
\t \t </DIVISION> 
 
\t \t 
 
\t \t <DIVISION> 
 
\t \t \t <DIVISION_NAME>Central</DIVISION_NAME> 
 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Chicago</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Cubs</TEAM_NAME> 
 
\t \t \t </TEAM> 
 
\t \t </DIVISION> 
 

 
\t \t <DIVISION> 
 
\t \t \t <DIVISION_NAME>West</DIVISION_NAME> 
 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Arizona</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Diamondbacks</TEAM_NAME> 
 
\t \t \t </TEAM> 
 
\t \t </DIVISION> 
 
\t </LEAGUE> 
 

 
\t <LEAGUE> 
 
\t \t <LEAGUE_NAME>American</LEAGUE_NAME> 
 
\t 
 
\t \t <DIVISION> 
 
\t \t \t <DIVISION_NAME>East</DIVISION_NAME> 
 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Baltimore</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Orioles</TEAM_NAME> 
 
\t \t \t </TEAM> 
 
\t \t </DIVISION> 
 

 
\t \t <DIVISION> 
 
\t \t \t <DIVISION_NAME>Central</DIVISION_NAME> 
 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Chicago</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>White Sox</TEAM_NAME> 
 
\t \t \t </TEAM> 
 
\t \t </DIVISION> 
 

 
\t \t <DIVISION> 
 
\t \t \t <DIVISION_NAME>West</DIVISION_NAME> 
 
\t \t \t <TEAM> 
 
\t \t \t \t <TEAM_CITY>Anaheim</TEAM_CITY> 
 
\t \t \t \t <TEAM_NAME>Angels</TEAM_NAME> 
 
\t \t \t </TEAM> 
 
\t \t </DIVISION> 
 
\t </LEAGUE> 
 
</SEASON>

答えて

1

あなたは、各プレイヤーが列を占有したい(それはそうと)場合は、各プレイヤーのための行を作成する必要がある - とget対応する祖先ノードからのシーズン、リーグ、部門およびチームのデータを含む。

この最小化の例を試してみてください。

XSLTあなたの例の入力に印加さ1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" encoding="UTF-8"/> 

<xsl:template match="/"> 
    <html> 
     <body> 
      <h2>SEASON</h2> 
      <table border="1"> 
       <tr> 
        <th>YEAR</th> 
        <th>LEAGUE</th> 
        <th>DIVISION</th> 
        <th>TEAM_CITY</th> 
        <th>TEAM_NAME</th> 
        <th>GIVEN_NAME</th> 
        <th>SURNAME</th> 
       </tr> 
       <xsl:for-each select="SEASON/LEAGUE/DIVISION/TEAM/PLAYER"> 
        <tr> 
         <td><xsl:value-of select="ancestor::SEASON/YEAR" /></td> 
         <td><xsl:value-of select="ancestor::LEAGUE/LEAGUE_NAME" /></td> 
         <td><xsl:value-of select="ancestor::DIVISION/DIVISION_NAME" /></td> 
         <td><xsl:value-of select="../TEAM_CITY" /></td> 
         <td><xsl:value-of select="../TEAM_NAME" /></td> 
         <td><xsl:value-of select="GIVEN_NAME" /></td> 
         <td><xsl:value-of select="SURNAME" /></td> 
        </tr> 
       </xsl:for-each> 
      </table> 
     </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

、(レンダリング)結果は次のようになります。

enter image description here

+0

恐ろしいはあなたに感謝!うまくいきました。先祖が、Googleで検索していたときに見たことのないものだったので、ありがとうございました。私はあなたが置いたものに基づいていくつかの異なる方法でそれをフォーマットすることができたので、私は今それを少し良くすると思う。 – wafflenator

関連する問題