왜 내 변수 할당 된 합계가 작동하지 않는지 알아 내려고 노력했습니다. 또한 내 테이블 출력은 전체 테이블을 통해 첫 번째 요소 만 반복합니다. 이 코드를 얻으려는 시도는 첫 번째 열에 인쇄 된 각 학생의 studentID, 두 번째 열에 해당 ID의 학생 이름을 입력 한 다음 학생이 3 가지 평가의 총점을 보유하는 변수를 할당하는 것입니다 세 번째 열에 총 표시를 인쇄 한 다음 총 표시 수에 따라 HD, D, C, P 또는 F를 지정합니다. HD는 85 플러스이고 D는 75+이지만 84 이하입니다.XSL sum() 및 변수/루프
누군가 내가 잘못 가고 있다고 말할 수 있습니까? 저는 XML/XSL에 아직 익숙하지 않으므로 비판을 환영합니다.
grade.xsl<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="StudentAmount" select="count(document('AssessmentItems.xml')/assessmentList/unit/studentList/student)"/>
<xsl:variable name="totalmark" select="sum(document('AssessmentItems.xml')/assessmentList/unit/*
[//assessmentList/unit/assessmentItems/assessment/@studId = //assessmentList/unit/studentList/student/@sid])"/>
<html>
<body>
<h2>Grade Report for <xsl:value-of select="assessmentList/unit/@unitId"/> - <xsl:value-of select="assessmentList/unit/unitName"/></h2>
<p>Number of students in this unit: <xsl:value-of select="$StudentAmount"/></p>
<table border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Total Mark</th>
<th>Grade</th>
</tr>
<xsl:for-each select="assessmentList/unit/studentList/student">
<tr>
<td><xsl:value-of select="document('AssessmentItems.xml')/assessmentList/unit/studentList/student/@sid"/></td>
<td><xsl:value-of select="document('AssessmentItems.xml')/assessmentList/unit/studentList/student"/></td>
<td><xsl:value-of select="document('AssessmentItems.xml')/assessmentList/unit/assessmentItems/assessment/mark"/></td>
<xsl:choose>
<xsl:when test="$totalmark > 85">
<td color="blue">HD</td>
</xsl:when>
<xsl:when test="$totalmark > 75">
<td color="black">D</td>
</xsl:when>
<xsl:when test="$totalmark > 65">
<td color="black">C</td>
</xsl:when>
<xsl:when test="$totalmark > 50">
<td color="black">P</td>
</xsl:when>
<xsl:otherwise>
<td color="red">F</td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
이 당신이 단 하나의 XML 문서 작업을하기 때문에, 당신은 상수 참조를하지 않아도, 첫째 파일 AssessmentItems.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="grade.xsl"?>
<assessmentList>
<unit unitId="3311">
<unitName>Learn To Read</unitName>
<studentList>
<student sid="1001">Lisa Simpson</student>
<student sid="1002">Barney Rubble</student>
<student sid="1003">Donald Duck</student>
</studentList>
<assessmentItems>
<assessment name="Assignment 1" weight="20">
<mark studId="1001">12</mark>
<mark studId="1002">18</mark>
<mark studId="1003">9</mark>
</assessment>
<assessment name="Assignment 2" weight="25">
<mark studId="1001">23</mark>
<mark studId="1002">14</mark>
<mark studId="1003">12.5</mark>
</assessment>
<assessment name="Quiz" weight="15">
<mark studId="1001">13</mark>
<mark studId="1002">9</mark>
<mark studId="1003">6</mark>
</assessment>
<assessment name="Final Exam" weight="40">
<mark studId="1001">38</mark>
<mark studId="1002">21</mark>
<mark studId="1003">20.5</mark>
</assessment>
</assessmentItems>
</unit>
</assessmentList>
나는 내 방식대로 오류를 봅니다! 도와 줘서 고마워, Tim C! 예, 지금 시도 할 것은이 코드의 apply-templates 버전을 사용하는 것입니다. 더 나은 기능으로 새 버전을 만들기 전에 일련의 코드를 작동시키고 싶습니다. knowlesges 술. apply-templates의 w3 schools xsl 섹션 이외에 자신이 선호하는 문서가 있습니까? – user1386559