so I have a class project I'm working on and I got it to a certain point but I need it to display one value instead of a value every time it comes across a student's name. It'll scan the document for a students name and when it finds it and what grade they have it writes it out as "1 2 3 4" instead of just "4".
Also if anyone could help me with getting it into percent form for the next part it'd be greatly appreciated!
XSL:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://ift.tt/tCZ8VR">
<xsl:variable name="total_students"/>
<xsl:template match="/">
<html>
<head>
<title>Grade Report</title>
</head>
<body>
<h2>A</h2>
Number of students receiving grade:
<xsl:call-template name="print_grade">
<xsl:with-param name="target_grade" select="'A'"/>
</xsl:call-template>
<p>Percentage of students receiving grade:</p>
<p/>
<h2>B</h2>
Number of students receiving grade:
<xsl:call-template name="print_grade">
<xsl:with-param name="target_grade" select="'B'"/>
</xsl:call-template>
<p>Percentage of students receiving grade:</p>
<p/>
<h2>C</h2>
Number of students receiving grade:
<xsl:call-template name="print_grade">
<xsl:with-param name="target_grade" select="'C'"/>
</xsl:call-template>
<p>Percentage of students receiving grade:</p>
<p/>
</body>
</html>
</xsl:template>
<xsl:template name="print_grade">
<xsl:param name="pos" select="1"/>
<xsl:param name="num" select="1"/>
<xsl:param name="target_grade"/>
<xsl:variable name="student" select="/class/student[grade=$target_grade][$pos]"/>
<xsl:if test="$student">
<td>
<xsl:value-of select="$num"/>
</td>
<xsl:call-template name="print_grade">
<xsl:with-param name="pos" select="$pos + 1"/>
<xsl:with-param name="num" select="$num + 1"/>
<xsl:with-param name="target_grade" select="$target_grade"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
XML:
<?xml version="1.0"?>
<?xml-stylesheet href="Project7.xsl" type="text/xsl"?>
<!-- XML Project 7 -->
<class>
<student>
<first-name>Jane</first-name>
<last-name>Doe</last-name>
<grade>A</grade>
</student>
<student>
<first-name>John</first-name>
<last-name>Smith</last-name>
<grade>B</grade>
</student>
<student>
<first-name>Harry</first-name>
<last-name>Grandson</last-name>
<grade>A</grade>
</student>
<student>
<first-name>Lacy</first-name>
<last-name>Jones</last-name>
<grade>B</grade>
</student>
<student>
<first-name>Ulne</first-name>
<last-name>Douglas</last-name>
<grade>C</grade>
</student>
<student>
<first-name>Ambrose</first-name>
<last-name>Tyler</last-name>
<grade>B</grade>
</student>
<student>
<first-name>Roger</first-name>
<last-name>Clemens</last-name>
<grade>A</grade>
</student>
<student>
<first-name>Monroe</first-name>
<last-name>Hamburger</last-name>
<grade>A</grade>
</student>
</class>
No comments:
Post a Comment