0

<ifb-regular-stats>各プレイヤーのノードを持つ一連のデータがあります。一部のプレイヤーは の追加ノードを持っています<ifb-goalie-stats>。私がやりたいことは、データ内にこの追加ノードを持つプレーヤーを除外することです。(私の例には示されていませんが、ゴールキーパーの統計のみを表示する追加のテーブルがあります。)

XML データの例 (この例では、長さのためにいくつかの子ノードを削除しました)

<sports-statistics>
  <sports-player-stats>
    <date year="2013" month="4" date="30" day="2"/>
    <soccer-ifb-player-stats>
      <ifb-player-stats>
      <player-name last-name="Test" first-name="Guy" shirt-name="" full-first="Guy" full-last="Test"/>
      <player-code global-id="537247" id="135523"/>
      <ifb-regular-stats type="team">
        <team-info global-id="26580" id="3340" location="Tulsa" name="TBears" alias="TUL" display-name="Tulsa"/>
        <games-played games="3"/>
        <games-started games="3"/>
        <goals goals="0" game-winning="0" own-goal="0" headers="0"/>
      </ifb-regular-stats>
      </ifb-player-stats>
      <ifb-player-stats>
      <player-name last-name="Abele" first-name="Kurt" shirt-name="" full-first="Kurt" full-last="Abele"/>
      <player-code global-id="537263" id="135524"/>
      <ifb-regular-stats type="team">
        <team-info global-id="26580" id="3340" location="Tulsa" name="TBears" alias="TUL" display-name="Tulsa"//>
        <games-played games="3"/>
        <games-started games="3"/>
        <goals goals="0" game-winning="0" own-goal="0" headers="0"/>
      </ifb-regular-stats>
      <ifb-goalie-stats type="team">
        <team-info global-id="26580" id="3340" location="Tulsa" name="TBears" alias="TUL" display-name="Tulsa"//>
        <games-played games="3"/>
        <games-started games="3"/>
        <record wins="0" losses="1" ties="2" percentage=".333"/>
      </ifb-goalie-stats>
  </sports-player-stats>
 </sports-statistics>

これが私のコードです:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
  <xsl:output method="html" indent="yes"  encoding = "utf-8"   standalone = "yes"/>

  <xsl:variable name="fcPlayers">
    <map team="team" />
  </xsl:variable>
  <xsl:variable name="fcPlayersMap" select="msxsl:node-set($fcPlayers)/*" />

  <xsl:template match="/">
    <html>
      <head >
         <meta charset="utf-8" />
        <title> Player Stats</title>
      </head>

      <body>
        <table id="fcPlayers" >
          <tr >
            <th>Last</th>
            <th>First</th>
            <th  align="center">GP</th>
            <th  align="center">GS</th>
            <th  align="center">MP </th>
            <th  align="center">G</th>
            <th  align="center">GWG</th>
            <th  align="center">S</th>
            <th  align="center">SOG</th>
            <Th  align="center" >F</Th>
          </tr>

          <xsl:apply-templates select="//ifb-player-stats/ifb-regular-stats[@type = 'team']" >
            <xsl:sort select="../player-name/@last-name" />
          </xsl:apply-templates>

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

  <xsl:template match="ifb-player-stats/ifb-regular-stats[starts-with(team-info/@global-id, '26583')]">
    <xsl:variable name="ti" select="../player-name" />

    <tr>
      <td>
        <xsl:value-of select="$ti/@last-name" />
      </td>
      <td>
        <xsl:value-of select="$ti/@first-name" />
      </td>
      <td align="center">
        <xsl:value-of select="games-played/@games"/>
      </td>
      <td align="center">
        <xsl:value-of select="games-started/@games"/>
      </td>
    </tr>

  </xsl:template>
</xsl:stylesheet>

よろしくお願いします。

4

2 に答える 2

0

ifb-player-statsが含まれているものはスキップifb-goalie-statsしますか? その場合は、次のパスを変更できますapply-templates

<xsl:apply-templates 
   select="//ifb-player-stats[not(ifb-goalie-stats)]
               /ifb-regular-stats[@type = 'team']" >
  <xsl:sort select="../player-name/@last-name" />
</xsl:apply-templates>
于 2013-05-04T01:55:18.150 に答える