私はxsltが新しく、xslt 1.0を学びたいと思っています。xsl:keyを理解しようとしています
xmlファイルで次の結果を得る方法を理解しようとしています。私はxslファイルでたくさんプレイしましたが、それはまったく動作していないために得られないものがあると思います...
私は初心者ですので、あなたの答えは簡単です。ありがとうございました !
結果は次のようになります。
Code Number of students Average per course
INF4830 3 86.0
INF1130 3 77.7
INF1330 4 82.0
INF4930 1 40.0
これは私のxmlファイルです:
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="temptransfo.xsl" type="text/xsl" ?>
<university>
<student><name>Robert Shaw</name>
<course code="INF4830" note="90" />
<course code="INF1130" note="70" />
<course code="INF1330" note="76" /></student>
<student><name>Peter Manning</name>
<course code="INF4830" note="76" />
<course code="INF1130" note="73" />
<course code="INF1330" note="74" /></student>
<student><name>Jeff Cooper</name>
<course code="INF4930" note="40" />
<course code="INF1130" note="90" />
<course code="INF1330" note="80" /></student>
<student><name>Laureen Hanley</name>
<course code="INF4830" note="92" />
<course code="INF1330" note="98" /></student>
</university>
これまでのところ、これは私のXSLファイルであるが、それは働いていません。結果は表には表示されません。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="html"
encoding="UTF-8"
doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd"
indent="yes" ></xsl:output>
<xsl:key name="mytable" match="student", use="course" />
<xsl:template match="/">
<html>
<head>
<title>Test1</title>
</head>
<body>
<table border="1">
<caption>Test1</caption>
<tr>
<th>Code</th>
<th>Number of student</th>
<th>Course average</th>
</tr>
<xsl:for-each select = "//course" >
<xsl:if test="generate-id(.)=generate-id(key('mytable',course[@code])[1])">
<tr>
<td> <xsl:value-of select="@code"/> </td>
<td> <xsl:value-of select="count(//course[@code=current()/@code])"/> </td>
<td> <xsl:value-of select="(sum (//course/@note)) div (count(//course[@code]))"/> </td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
を私の答えで指摘した概念上の誤りから、構文エラーもあります。属性の間にコンマを置くことはできません(XSLTの10行目)。 –