2013-12-16 4 views
0

요약하면 각 학생 노드에 대한 테스트 표시를 계산하고 싶지만 출력은 첫 번째 학생의 표시를 올바르게 표시하고 다른 학생의 표시로 복사합니다.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 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이다. 문제는 두 학생의 점수가 다르더라도 테스트, 프로젝트 등에 대한 결과물이 동일하다는 것입니다.

두 번째 학생의 결과는 XML에서 마크를 변경 한 후에도 첫 번째 학생과 동일합니다. 이것은 해결해야 할 간단한 문제 일 수 있으며 사과드립니다. XSL에 대한 지식이 거의 없기 때문입니다.

제공되는 도움에 미리 감사드립니다.

+1

'test1' 이전에'// '를 제거하면 안됩니까? –

+0

이제 알겠습니다! 고맙습니다. – Citrine

답변

0

test1 이전의 //은 XSL이 XML의 루트로 돌아가도록 지시하고이를 제거합니다.

관련 문제