私はxsltのコーディングにかなり慣れておらず、次のことをしようとしてかなり行き詰まっています。
馬の繁殖情報を2つの主要なセクションに分けたxmlファイルがあります。1. Horsesノードには、個々の馬のパフォーマンスの詳細と、その種馬が誰であるかを示すIDがあります。2. Siresノードは、繁殖固有の統計も保持しているSiresのリストです。
子馬が獲得した「賭け金」の合計に基づいて、種雄牛のリストを並べ替える必要があります(つまり、馬のノードで)。
したがって、切り詰められたxmlファイルは次のようになります。
<Horses>
<Horse>
<ID>1</ID>
<Name>hrsA</Name>
<SireID>101</SireID>
<Pace>
<Stakes>4800</Stakes>
</Pace>
</Horse>
<Horse>
<ID>2</ID>
<Name>hrsB</Name>
<SireID>102</SireID>
<Pace>
<Stakes>3600</Stakes>
</Pace>
</Horse>
<Horse>
<ID>3</ID>
<Name>hrsC</Name>
<SireID>102</SireID>
<Pace>
<Stakes>2800</Stakes>
</Pace>
</Horse>
<Horse>
<ID>4</ID>
<Name>hrsD</Name>
<SireID>101</SireID>
<Pace>
<Stakes>56</Stakes>
</Pace>
</Horse>
<Horse>
<ID>5</ID>
<Name>hrsE</Name>
<SireID>100</SireID>
<Pace>
<Stakes>20000</Stakes>
</Pace>
</Horse>
<Horse>
<ID>6</ID>
<Name>hrsF</Name>
<SireID>101</SireID>
<Trot>
<Stakes>20000</Stakes>
</Trot>
</Horse>
<Horse>
<ID>7</ID>
<Name>hrsG</Name>
<SireID>101</SireID>
<Trot>
<Stakes>559</Stakes>
</Trot>
</Horse>
<Horse>
<ID>8</ID>
<Name>hrsH</Name>
<SireID>102</SireID>
<Pace>
<Stakes>386</Stakes>
</Pace>
<Trot>
<Stakes>10000</Stakes>
</Trot>
</Horse>
</Horses>
<Sires>
<Sire>
<ID>100</ID>
<Name>srA</Name>
<LiveFoalsALL>117</LiveFoalsALL>
</Sire>
<Sire>
<ID>101</ID>
<Name>srB</Name>
<LiveFoalsALL>774</LiveFoalsALL>
</Sire>
<Sire>
<ID>102</ID>
<Name>srC</Name>
<LiveFoalsALL>43</LiveFoalsALL>
</Sire>
</Sires>
したがって、さまざまな賭け金を合計すると、出力の順序は次のようになります。
Sire 101 (srB) Stakes: $25415
Sire 100 (srA) Stakes: $20000
Sire 103 (srC) Stakes: $16768.
私が他のウェブページのために個々の馬の賭け金を合計して注文したとき、私は使用することができました:
<xsl:apply-templates select="Horse">
<xsl:sort select="sum(descendant::Stakes)" data-type="number"
order="descending"/>
</xsl:apply-templates>
正しい順序を取得するために合計するために馬のノードを参照している種雄牛に対して同じことを行う方法がわかりません...おそらく、Sire/IDがHorse/SireIDと等しいと言っているようなものです:
<xsl:apply-templates select="Sire">
<xsl:sort select="sum(//Horses/Horse[@SireID=ID]/descendant::Stakes)"
data-type="number" order="descending"/>
</xsl:apply-templates>
しかし、それは機能しません。デバッガーは、ソート行に到達すると現在のテンプレートから直接ジャンプするため、構文が無効である必要があります。私はこのテーマのバリエーションを試しましたが、成功しませんでした。
誰かが私のSireテンプレートを呼び出して正しい順序を取得する方法のポインタを教えてもらえますか?
ありがとう、
ブライス・ステンバーグ