日历

2008 7.9 Wed
  12345
6789101112
13141516171819
20212223242526
2728293031  
«» 2008 - 7 «»

文章搜索

日志文章

2007年08月31日 22:41:43

xml初入(5)

现在有点懒,有阵子没写文章,排名都不见踪影,来来来,xml第五次课时--数据源对象(DSO).
XML DSO 就是一个Microsoft ActiveX控件,嵌入到Microsoft Internet Explorer中.DSO有助于格式化数据并将这些数据显示在HTML页面上.使用DSO,就可以从外部XML文档或从嵌入在HTML文档的XML数据中提取数据.当然这是微软一个控件而已,当然只适合用于它的IE浏览器,而对于其它浏览器则不太支持,所以用的不是挺多.
OK,不管怎样,还是来讲个实例.
先还是一个XML文档,代码如下:
取名为(student.xml)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="MyStudentStyle.xsl"?>
<StudentInfo>
<student id="101">
<name>张三</name>
<sex>男</sex>
<age>20</age>
<score>59</score>
</student>
<student id="102">
<name>李四</name>
<sex>女</sex>
<age>18</age>
<score>70</score>
</student>
<student id="103">
<name>王五</name>
<sex>男</sex>
<age>21</age>
<score>65</score>
</student>
<student id="104">
<name>赵六</name>
<sex>男</sex>
<age>22</age>
<score>86</score>
</student>
<student id="105">
<name>陈七</name>
<sex>女</sex>
<age>20</age>
<score>90</score>
</student>
</StudentInfo>

样式文档,还是初入四中的代码,差不多,如下:
<?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="/">

<html>
<head>
<title>学生信息表</title>
</head>

<body>

<h2 align="center">学生信息表</h2>
<table align="center" border="1">
  <tr>
  <th>学生学号</th>
  <th>学生姓名</th>
  <th>学生性别</th>
  <th>学生年龄</th>
  <th>学生得分</th>
  <th>老师评价</th>
  </tr>
  <xsl:for-each select="StudentInfo/student">
 
  <xsl:sort order="ascending" select="@id" data-type="number">
  </xsl:sort>
 
  <tr>
  <xsl:if test="sex='女'">
    <xsl:attribute name="bgcolor">lightgreen</xsl:attribute>
  </xsl:if>
  <td><xsl:value-of select="@id"></xsl:value-of></td>
  <td><xsl:apply-templates select="name"></xsl:apply-templates></td>
  <td><font><xsl:if test="sex='女'">
    <xsl:attribute name="color">blue</xsl:attribute>
  </xsl:if>
    <xsl:apply-templates select="sex"></xsl:apply-templates></font></td>
  <td><xsl:apply-templates select="age"></xsl:apply-templates></td>
  <td><xsl:apply-templates select="score"></xsl:apply-templates></td>
  <td><xsl:choose>
    <xsl:when test="score < 60">不及格</xsl:when>
    <xsl:when test="(score > 60 or score=60) and score < 70">及格</xsl:when>
      <xsl:when test="(score > 70 or score=70) and score < 80">中</xsl:when>
      <xsl:when test="(score > 80 or score=80) and score < 90">良好</xsl:when>
      <xsl:when test=" score > 90 or score=90">优秀</xsl:when>
  </xsl:choose></td>
  </tr>
  </xsl:for-each>
  <xsl:variable name="Count">
  <xsl:value-of select="count(StudentInfo/student)"></xsl:value-of>
  </xsl:variable>
  <xsl:variable name="Sum">
  <xsl:value-of select="sum(StudentInfo/student/score)"></xsl:value-of>
  </xsl:variable>
  <xsl:variable name="Avg">
  <xsl:value-of select="round($Sum div $Count * 10) div 10"></xsl:value-of>
  </xsl:variable>
  <tr>
  <td colspan="5">学生人数</td>
  <td><xsl:value-of select="$Count"></xsl:value-of></td>
  </tr>
  <tr>
  <td colspan="5">总分数</td>
  <td><xsl:value-of select="$Sum"></xsl:value-of></td>
  </tr>
  <tr>
  <td colspan="5">平均分</td>
  <td><xsl:value-of select="$Avg"></xsl:value-of></td>
  </tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

OK,最后便是在HTML中的代码咯:
<html>
<head>
  <title>学生信息</title>
</head>
<xml id="student" src="student.xml"/>
<xml id="student1" src="MyStudentStyle.xsl"/>
<body onload="load()">
  <input type="button" value="学号排序" onclick="change(
[url=mailto:]'@id','number')">
  <input type="button" value="分数排序" onclick="change('score','number')">
  <div id="MyID"/>
</body>
<script language="javascript">  
var XMLDoc;<!--声明文档对象模型变量-->
var CssStyle;<!--声明样式变量-->
var sortSelect;<!--声明样式按什么排序的变量-->
var sortType;<!--声明样式的类型变量-->
function load()
{
XMLDoc=student.XMLDocument;<!--得到文档对象模型-->
CssStyle=student1.XMLDocument;<!--得到样式对象模型,这里为什么使用student2对象呢?是因为在student.xml中首先用的是MyStudentStyle样式-->
sortSelect=student1.selectSingleNode("*//xsl:sort/@select");
sortType=student1.selectSingleNode("*//xsl:sort/@data-type");
MyID.innerHTML=XMLDoc.transformNode(CssStyle);<!--改变接点-->
}
function change(name,type)
{
CssStyle=student1.XMLDocument;
sortSelect.value=name;
sortType.value=type;
MyID.innerHTML=XMLDoc.transformNode(CssStyle);
}
</script>
</html>
可以自如切换,根据不同的排序值与类型.效果如下:



这是按下了"按分数排序"的按钮的效果,后面的试试.
OK,完成.

Tags: xml  

类别: xml |  评论(1) |  浏览(1999) |  收藏
一共有 1 条评论
1楼 三笑数码科技--电脑扩展主机Ne.. 2007年09月04日 15:57:56 Says:
发表评论