2012-02-02 2 views
2

XSLT를 배우기 위해 다음과 같은 XML 파일과 XSLT 스타일 시트가 있습니다. 스코어 3*goals + 2*assists 뒤에 순위가 매겨진 선수들의 목록을 만들고 싶습니다.XSLT 1.0의 정렬 문제

<?xml-stylesheet type="text/xsl" href="player_ranking.xsl"?> 
<soccer xmlns="http://mysoccer.it"> 
    <players> 
    <player> 
     <name>Pelé</name> 
     <goals>21</goals> 
     <assists>9</assists> 
    </player> 
    <player> 
     <name>Beckenbauer</name> 
     <goals>7</goals> 
     <assists>18</assists> 
     </player> 
     <player> 
     <name>Spiderman</name> 
     <goals>27</goals> 
     <assists>38</assists> 
     </player> 
     <player> 
     <name>Hagi</name> 
     <goals>13</goals> 
     <assists>14</assists> 
     </player> 
     <player> 
     <name>Laudrup</name> 
     <goals>11</goals> 
     <assists>25</assists> 
     </player> 
     <player> 
     <name>Gullit</name> 
     <goals>17</goals> 
     <assists>15</assists> 
     </player> 
    </players> 
    </soccer> 

(오페라와 파이어 폭스 모두 시도) 브라우저에서 스타일 시트

<xsl:stylesheet version="2.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:soc="http://mysoccer.it" 
    xmlns="http://www.w3.org/1999/xhtml"> 

    <xsl:template match="soc:soccer"> 
    <html> 
     <head> 
    <title>Famous players ranked</title> 
     </head> 
     <body> 
     <h1>Overall ranking</h1> 
     <xsl:apply-templates match="soc:players"/> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="soc:players"> 
    <xsl:apply-templates select="soc:player"> 
     <xsl:sort select="soc:goals * 3 + 2 * soc:assists" order="descending"/> 
    </xsl:apply-templates> 
    </xsl:template> 

    <xsl:template match="soc:player"> 
    <xsl:value-of select="soc:name"/> 
    with score 
    <xsl:value-of select="soc:goals * 3 + 2 * soc:assists"/> 
    <br/> 
    </xsl:template> 

</xsl:stylesheet> 

Overall ranking 

Laudrup with score 83 
Pelé with score 81 
Gullit with score 81 
Hagi with score 67 
Beckenbauer with score 57 
Spiderman with score 157 

는 스파이더 맨이 목록의 상단에 나타납니다 생산하고 있습니다. 누군가 내 오류를 지적 할 수 있습니까?

내가 version="1.0"를 사용하여 같은 스타일 시트에 version="2.0" 사용한 Error loading stylesheet: Parsing an XSLT stylesheet failed.

답변

3

그래서, 그것의 영숫자 정렬을하는 것 같은데 나에게주는 1 < 5 등

정렬 선을 변경해보십시오 :

<xsl:sort select="soc:goals * 3 + 2 * soc:assists" data-type="number" order="descending"/> 
+1

D' oh! 고맙습니다. –