关于xml表格生成问题!!!!

狂啃馍馍 2007-02-01 01:35:45
<?xml version="1.0"?>
<units>
<unit>
<unitCode>FIT2028</unitCode>
<unitLeader>Janet Fraser</unitLeader>
<class tutorialNo="t1" average="a">
<tutor>Janet Fraser</tutor>
<tutor>Christine Clemence</tutor>
<timetable>
<day>Wednesday</day>
<time>14:00:00</time>
<room>G3.18</room>
</timetable>
<studentMarks>
<student id="s12233441">
<firstname>Bilbo</firstname>
<surname>Baggins</surname>
<assignments>
<assignment assNo="1">80</assignment>
<assignment assNo="2">90</assignment>
<unitTest>75</unitTest>
</assignments>
</student>
<student id="s12233442">
<firstname>Frodo</firstname>
<surname>Baggins</surname>
<assignments>
<assignment assNo="1">69</assignment>
<assignment assNo="2">55</assignment>
<unitTest>80</unitTest>
</assignments>
</student>
<student id="s12233443">
<firstname>Fred</firstname>
<surname>Flintstone</surname>
<assignments>
<assignment assNo="1">86</assignment>
<assignment assNo="2">73</assignment>
<unitTest>90</unitTest>
</assignments>
</student>
<student id="s12233444">
<firstname>Peter</firstname>
<surname>Pan</surname>
<assignments>
<assignment assNo="1">45</assignment>
<assignment assNo="2">40</assignment>
<unitTest>50</unitTest>
</assignments>
</student>
<student id="s22113344">
<firstname>Fred</firstname>
<surname>Bloggs</surname>
<assignments>
<assignment assNo="1">51</assignment>
<assignment assNo="2">55</assignment>
<unitTest>50</unitTest>
<lateAssignment>
<assNo>2</assNo>
<penalty>10</penalty>
</lateAssignment>
</assignments>
</student>
</studentMarks>
</class>
<class tutorialNo="t2" average="a">
<tutor>Des Casey</tutor>
<tutor>Janet Fraser</tutor>
<timetable>
<day>Wednesday</day>
<time>16:00:00</time>
<room>G3.08</room>
</timetable>
<studentMarks>
<student id="s11223344">
<firstname>Sylvester</firstname>
<surname>Stallone</surname>
<assignments>
<assignment assNo="1">0</assignment>
<assignment assNo="2">75</assignment>
<unitTest>0</unitTest>
</assignments>
</student>
<student id="s23344552">
<firstname>Merriadoc</firstname>
<surname>Brandybuck</surname>
<assignments>
<assignment assNo="1">0</assignment>
<assignment assNo="2">55</assignment>
<unitTest>45</unitTest>
</assignments>
</student>
<student id="s23344553">
<firstname>Peregrin</firstname>
<surname>Took</surname>
<assignments>
<assignment assNo="1">45</assignment>
<assignment assNo="2">55</assignment>
<unitTest>50</unitTest>
</assignments>
</student>
<student id="s23344554">
<firstname>Ethan</firstname>
<surname>Hunt</surname>
<assignments>
<assignment assNo="1">90</assignment>
<assignment assNo="2">80</assignment>
<unitTest>90</unitTest>
<lateAssignment>
<assNo>1</assNo>
<penalty>20</penalty>
</lateAssignment>
</assignments>
</student>
<student id="s44223355">
<firstname>Arthur</firstname>
<surname>King</surname>
<assignments>
<assignment assNo="1">85</assignment>
<assignment assNo="2">91</assignment>
<unitTest>87</unitTest>
</assignments>
</student>
<student id="s55441122">
<firstname>Sean</firstname>
<surname>Bean</surname>
<assignments>
<assignment assNo="1">79</assignment>
<assignment assNo="2">82</assignment>
<unitTest>82</unitTest>
</assignments>
</student>
</studentMarks>
</class>
<class tutorialNo="t3" average="a">
<tutor>Janet Fraser</tutor>
<timetable>
<day>Friday</day>
<time>09:00:00</time>
<room>G3.18</room>
</timetable>
<studentMarks>
<student id="s99887766">
<firstname>Ben</firstname>
<surname>Cousins</surname>
<assignments>
<assignment assNo="1">55</assignment>
<assignment assNo="2">45</assignment>
<unitTest>0</unitTest>
</assignments>
</student>
<student id="s88995544">
<firstname>Kelly</firstname>
<surname>Osbourne</surname>
<assignments>
<assignment assNo="1">83</assignment>
<assignment assNo="2">90</assignment>
<unitTest>82</unitTest>
</assignments>
</student>
<student id="s77669911">
<firstname>Michael</firstname>
<surname>Long</surname>
<assignments>
<assignment assNo="1">75</assignment>
<assignment assNo="2">75</assignment>
<unitTest>75</unitTest>
<lateAssignment>
<assNo>2</assNo>
<penalty>20</penalty>
</lateAssignment>
</assignments>
</student>
</studentMarks>
</class>
</unit>
<unit>
<unitCode>FIT3043</unitCode>
<unitLeader>Des Casey</unitLeader>
<class tutorialNo="t1">
<tutor>Christine Clemence</tutor>
<timetable>
<day>Monday</day>
<time>13:00:00</time>
<room>G3.08</room>
</timetable>
<studentMarks>
<student id="s23344554">
<firstname>Ethan</firstname>
<surname>Hunt</surname>
<assignments>
<assignment assNo="1">65</assignment>
<assignment assNo="2">90</assignment>
<unitTest>55</unitTest>
</assignments>
</student>
<student id="s44223355">
<firstname>Arthur</firstname>
<surname>King</surname>
<assignments>
<assignment assNo="1">81</assignment>
<assignment assNo="2">79</assignment>
<unitTest>80</unitTest>
</assignments>
</student>
<student id="s12233444">
<firstname>Peter</firstname>
<surname>Pan</surname>
<assignments>
<assignment assNo="1">69</assignment>
<assignment assNo="2">55</assignment>
<unitTest>80</unitTest>
<lateAssignment>
<assNo>2</assNo>
<penalty>10</penalty>
</lateAssignment>
</assignments>
</student>
<student id="s12233443">
<firstname>Fred</firstname>
<surname>Flintstone</surname>
<assignments>
<assignment assNo="1">86</assignment>
<assignment assNo="2">73</assignment>
<unitTest>90</unitTest>
<lateAssignment>
<assNo>1</assNo>
<penalty>10</penalty>
</lateAssignment>
<lateAssignment>
<assNo>2</assNo>
<penalty>20</penalty>
</lateAssignment>
</assignments>
</student>
<student id="s12233441">
<firstname>Bilbo</firstname>
<surname>Baggins</surname>
<assignments>
<assignment assNo="1">45</assignment>
<assignment assNo="2">40</assignment>
<unitTest>50</unitTest>
</assignments>
</student>
</studentMarks>
</class>

</unit>
</units>
...全文
764 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
狂啃馍馍 2007-02-01
  • 打赏
  • 举报
回复
The page should look something like this:

ID NAME FIT2028 FIT3043
---------------------------------------------------
s12233441 Bilbo Baggins 81.67 45.00
---------------------------------------------------
s12233443 Fred Flintstone 83.00 83.00
---------------------------------------------------
s12233444 Peter Pan 45.00 68.00
---------------------------------------------------
s23344554 Ethan Hunt 86.67 70.00
---------------------------------------------------
s44223355 Arthur King 87.67 80.00
狂啃馍馍 2007-02-01
  • 打赏
  • 举报
回复
上面是我写的错误的xsl,我在把原来的规则发上来!!!!!!

Take the XML document constructed above and use an XSLT stylesheet to list elements of some of the student results records, as specified below.


Display a list of students who are enrolled in both FIT2028 and FIT3043 and their average marks (Ass 1, Ass 2 and Unit Test) for each unit.

Include the student ID, firstname and surname.

NOTE: It is not necessary to worry about late assignment submissions for this page.

NOTE: 5 bonus marks available for getting this list to sort in surname, firstname ascending alphabetic order. If you do this you will need to place a message at the top of your generated HTML file indicating that you have done so.

狂啃馍馍 2007-02-01
  • 打赏
  • 举报
回复
抱歉,我现在把xsl文件发上来!
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="units">
<html>
<head>
<title></title>
</head>
<body bgcolor="#CCCCFB">
<b>
<font size="4">
<center>
Students Enrolled in FIT2028 and FIT3043
</center>
</font>
</b>
<br/> <br/>
<table border="1" cellspacing="0">
<tr bgcolor="#1A72A6">
<th>ID</th>
<th>Name</th>
<th>FIT2028</th>
<th>FIT3043</th>
</tr>
<xsl:apply-templates select="unit[ position() mod 2 = 1 ]" />
</table>
</body>
</html>
</xsl:template>
<xsl:template match="unit[ position() mod 2 = 1 ]">
<xsl:for-each select=".//student">
<xsl:sort select="@id"/>
<xsl:choose>
<xsl:when test="@id='s12233443'">
<tr align="left">
<th><xsl:value-of select="@id"/></th>
<th><xsl:value-of select="firstname"/><xsl:text> </xsl:text><xsl:value-of select="surname"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.00')"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.00')"/></th>
</tr>
</xsl:when>
<xsl:when test="@id='s12233441'">
<tr align="left">
<th><xsl:value-of select="@id"/></th>
<th><xsl:value-of select="firstname"/><xsl:text> </xsl:text><xsl:value-of select="surname"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.##')"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.##')"/></th>
</tr>
</xsl:when>
<xsl:when test="@id='s12233444'">
<tr align="left">
<th><xsl:value-of select="@id"/></th>
<th><xsl:value-of select="firstname"/> <xsl:text> </xsl:text><xsl:value-of select="surname"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.00')"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.00')"/></th>
</tr>
</xsl:when>
<xsl:when test="@id='s44223355'">
<tr align="left">
<th><xsl:value-of select="@id"/></th>
<th><xsl:value-of select="firstname"/><xsl:text> </xsl:text><xsl:value-of select="surname"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.##')"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.##')"/></th>
</tr>
</xsl:when>
<xsl:when test="@id='s23344554'">
<tr align="left">
<th><xsl:value-of select="@id"/></th>
<th><xsl:value-of select="firstname"/><xsl:text> </xsl:text><xsl:value-of select="surname"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.##')"/></th>
<th><xsl:value-of select="format-number((sum(.//assignment)+sum(.//unitTest)) div 3,'###.##')"/></th>
</tr>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
tornado_cn 2007-02-01
  • 打赏
  • 举报
回复
没明白楼主想要的是什么? 逻辑规则
tornado_cn 2007-02-01
  • 打赏
  • 举报
回复
最好先把你的XSLT帖出来
狂啃馍馍 2007-02-01
  • 打赏
  • 举报
回复
上面的xml文件需要解析为下面的表格:
ID NAME FIT2028 FIT3043
---------------------------------------------------
s12233441 Bilbo Baggins 81.67 45.00
---------------------------------------------------
s12233443 Fred Flintstone 83.00 83.00
---------------------------------------------------
s12233444 Peter Pan 45.00 68.00
---------------------------------------------------
s23344554 Ethan Hunt 86.67 70.00
---------------------------------------------------
s44223355 Arthur King 87.67 80.00

FIT2028 为第一个unit中student平均分 FIT3043为第二个unit中student平均分


现在遇到的困难是:
1,两个unit相同的时候,总是两个ID,两个Name都下显示出来了,但只需要显示一个就够了
2,取平均分的时候,FIT2028 为第一个unit中student平均分, FIT3043为第二个unit中student平均分,不知道如何去做。


麻烦哪位高手给点提示,拜托了!

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧