2013-12-16 62 views
0

簡而言之,我想計算每個學生節點的測試標記,但輸出只能正確顯示第一個學生的標記並將其複製到其他學生的標記中。僅限第一個孩子的XSL顯示計算

這裏是我的XML:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="list_student.xsl"?> 

<university> 

     <student> 
      <name>Irwan</name> 
      <id>8888999</id> 
      <pass>1111</pass> 
      <ic>911006</ic> 
      <group>12</group> 
      <team>2</team> 
      <program>cs233</program> 
      <phone>626134</phone> 
      <email>[email protected]</email> 
      <test1>100</test1> 
      <test2>100</test2> 
      <project>80</project> 
      <assignment1>90</assignment1> 
      <assignment2>100</assignment2> 
      <assignment3>100</assignment3> 
      <assignment4>100</assignment4> 
      <quiz1>10</quiz1> 
      <quiz2>90</quiz2> 
      <quiz3>80</quiz3> 
      <quiz4>100</quiz4> 
     </student> 

     <student> 
      <name>aida</name> 
      <id>2011585383</id> 
      <pass>1234</pass> 
      <ic>911006115640</ic> 
      <group>B</group> 
      <team>14</team> 
      <program>CS233</program> 
      <phone>0189041004</phone> 
      <email>[email protected]</email> 
      <test1>0</test1> 
      <test2>0</test2> 
      <project>100</project> 
      <assignment1>100</assignment1> 
      <assignment2>100</assignment2> 
      <assignment3>100</assignment3> 
      <assignment4>100</assignment4> 
      <quiz1>100</quiz1> 
      <quiz2>100</quiz2> 
      <quiz3>100</quiz3> 
      <quiz4>100</quiz4> 
     </student> 

    </university> 

這裏是我的XSL:

<?xml version='1.0'?><!-- DWXMLSource="student.xml" --> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="/"> 
    <html> 
    <body> 
    <table border="2" bgcolor="yellow"> 
     <tr> 
     <th>NAME</th> 
     <th>ID</th> 
     <th>PASSWORD</th> 
     <th>IC</th> 
     <th>GROUP</th> 
     <th>TEAM</th> 
     <th>PROGRAMME</th> 
     <th>PHONE NUMBER</th> 
     <th>EMAIL</th> 
     <th>TEST (%)</th> 
     <th>QUIZ (%)</th> 
     <th>PROJECT (%)</th> 
     <th>ASSIGNMENT (%)</th> 
     <th>TOTAL (%)</th> 
     </tr> 


     <xsl:for-each select="university/student"> 
     <tr> 
      <td><xsl:value-of select="name"/></td> 
      <td><xsl:value-of select="id"/></td> 
      <td><xsl:value-of select="pass"/></td> 
      <td><xsl:value-of select="ic"/></td> 
      <td><xsl:value-of select="group"/></td> 
      <td><xsl:value-of select="team"/></td> 
      <td><xsl:value-of select="program"/></td> 
      <td><xsl:value-of select="phone"/></td> 
      <td><xsl:value-of select="email"/></td> 
      <td><xsl:value-of select="(//test1 div 10) + (//test2 div 10)"/> <xsl:text>/20</xsl:text> </td> 
      <td><xsl:value-of select="(//quiz1 div 40) + (//quiz2 div 40) + (//quiz3 div 40) + (//quiz4 div 40)"/> <xsl:text>/10</xsl:text></td> 
      <td><xsl:value-of select="(//project div 5)"/> <xsl:text>/20</xsl:text> </td> 
      <td><xsl:value-of select="(//assignment1 div 40) + (//assignment2 div 40) + (//assignment3 div 40) + (//assignment4 div 40)"/> <xsl:text>/10</xsl:text></td> 
      <td><xsl:value-of select="((//test1 div 10) + (//test2 div 10)) + ((//quiz1 div 40) + (//quiz2 div 40) + (//quiz3 div 40) + (//quiz4 div 40)) + (//project div 5) + ((//assignment1 div 40) + (//assignment2 div 40) + (//assignment3 div 40) + (//assignment4 div 40))"/> <xsl:text>/60</xsl:text></td> 
     </tr> 

     </xsl:for-each> 

    </table> 
    <a href="index.php">Main Menu</a> 
    </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

可以忽略的計算。問題在於測試,項目等的輸出是相同的,即使兩個學生的分數不同。

即使在更改XML中的標記後,第二名學生的結果與第一名學生的結果相同。這可能是一個簡單的問題,我很抱歉,因爲我對XSL知之甚少。

預先感謝您提供的任何幫助。

+1

難道你不應該在'test1'之前擺脫'//'嗎? –

+0

現在我明白了!謝謝。 – Citrine

回答

0

test1之前的//告訴XSL返回到XML的根目錄,請嘗試刪除它們。