我有一個包含多個team
元素的XML文件。每個team
元素都有多個player
子元素。用xml和xslt分組輸出
的基本結構如下
<league>
<team>
<!-- Team details go here -->
<player>
<!-- Player details go here -->
</player>
</team>
</league>
我需要的是要顯示的團隊的詳細信息,然後在表中的玩家的輸出。玩家應按姓氏排序,隊名應按其姓名排序。
我得到的是一個接一個的團隊細節,然後是所有球員的細節。
我已將以下xml簡化爲只有少數幾個細節,以便於閱讀。
這是我的XML
<league xmlns:xlink="http://www.w3.org/1999/xlink">
<team>
<teamName>Southampton</teamName>
<manager>Ronald Koeman</manager>
<stadium>St. Mary's</stadium>
<players>
<firstName>Victor</firstName>
<surname>Wanyama</surname>
<squadNumber>12</squadNumber>
</players>
<players>
<firstName>Shane</firstName>
<surname>Long</surname>
<squadNumber>7</squadNumber>
</players>
</team>
<team>
<teamName>Arsenal</teamName>
<manager>Arsene Wenger</manager>
<stadium>Emirates Stadium</stadium>
<players>
<firstName>Hector</firstName>
<surname>Bellerin</surname>
<squadNumber>24</squadNumber>
</players>
<players>
<firstName>Santi</firstName>
<surname>Cazorla</surname>
<squadNumber>19</squadNumber>
</players>
</team>
</league>
而XSLT
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" type="text/css" href="epl.css" />
</head>
<body>
<xsl:for-each select="league/team">
<xsl:sort select="teamName"/>
<b>Name</b>
<p><xsl:value-of select="teamName" /></p>
<b>Manager</b>
<p><xsl:value-of select="manager" /></p>
<b>Stadium</b>
<p><xsl:value-of select="Stadium" /></p>
</xsl:for-each>
<tr>
<th>First Name</th>
<th>Surname</th>
<th>Squad Number</th>
</tr>
<xsl:for-each select="league/team/players">
<xsl:sort select="surname"/>
<tr>
<td><xsl:value-of select="firstName"/></td>
<td><xsl:value-of select="surname"/></td>
<td><xsl:value-of select="squadNumber"/></td>
</tr>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我沒有足夠的代表表明了什麼我得到的圖像,但只是把我想將數據分組球隊的球員數據與下表中的每個球隊相關。
我試過了。
我試過以各種方式使用for-each-group
。所有這些導致通用的「錯誤加載樣式表:解析XSLT樣式表失敗。」在Firefox中。
<xsl:for-each-group select="league" group-by="@team"> <team name="{current-grouping-key()}"> </xsl:for-each-group
這包括將for-each-group
在體內的開始,在它自己的xsl:模板,在主要的xsl:模板。
我已經嘗試了「select」部分的備選xpath表達式。像league/team
,,league/
我試過的嵌套在一起得到的球員和球隊數據到XSL另一個用於-每個
我有XML工具插件記事本++安裝並試圖保存文件什麼時候得到: XML解析埃羅在第51行:在樣式錶行數據標籤的 過早結束3
51號線只有收盤</xsl:stylesheet>
一旦我刪除for-each-group
它正常保存但輸出順序不正確,正如我前面提到的。顯示所有球隊數據,然後顯示所有球員數據,而無需將球員與球隊聯繫起來。
感謝蒂姆,我曾試圖嵌套在一起,但我錯過了,我不得不改變XPath表達式的地步。無可否認,我花了大部分時間研究並試圖爲每個小組實施。這讓我回頭看着正確的方向,代碼運行良好。再次感謝! – nod64