在xml文档中,我们可以存储一些必要的数据,因为xml 具有简单易读,跨平台传输的特点,但有的时候好像也不是那么易读,比如你不进行任何的操作直接打开xml文档。
<?xml version="1.0" encoding="utf-8"?>
<class>
<student>
<name>张三</name>
<age>18</age>
</student>
<student>
<name>李四</name>
<age>18</age>
</student>
<student>
<name>王五</name>
<age>18</age>
</student>
<student>
<name>赵六</name>
<age>18</age>
</student>
<student>
<name>周七</name>
<age>18</age>
</student>
</class>
这是一份班级人员名单,这里为了测试也只有几个人,如果是一份真正的班级人员名单,大概人数也有4、50个吧,所以如果不进行任何操作看起来是相当费劲的,这里我们引入正题来讲解一下xsl。
xsl
xsl 中的s 其实就是指 stylesheet样式单,当然,xml自己也是可以引入css样式单的。这里我们主要说的是xsl,所以对css样式不再详细的讲解。
首先第一部我们当然就是创建一份xsl文件。这里我取名叫做 “student.xsl”。
下面是我在这个文件里写的代码。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table>
<th>
<td>name</td>
<td>age</td>
</th>
<xsl:for-each select="class/student">
<tr>
<td><xsl:value-of select="name"/></td>
<td><xsl:value-of select="age"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
其中第一行是xml 文档的头声明,表明这是一份xml文档。
第二行则是声明这也是一个stylesheet的文件,同时我们给了版本号,和它的namespace。
template
template元素用来构建一个模板,其中的match属性的属性值是一个Xpath,这里我们用”/”表示根标签
for-each
相信学过js 或者 java的读者对这个应该非常的熟悉,就是一个循环,当然它的作用跟它的名字是一样的,我们可以遍历所有select 指定的xpath元素,然后将它放入输出流中。
value-of
这个元素是能够提取 select属性所指向的元素的值,然后把它放入输出流中。
代码中我指定了一个table来装载信息。但是这样还不够,因为我们还没跟源文件建立起联系。
打开源文件
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<class>
<student>
<name>张三</name>
<age>18</age>
</student>
<student>
<name>李四</name>
<age>18</age>
</student>
<student>
<name>王五</name>
<age>18</age>
</student>
<student>
<name>赵六</name>
<age>18</age>
</student>
<student>
<name>周七</name>
<age>18</age>
</student>
</class>
我在第二行加上了 : < ?xml-stylesheet type=”text/xsl” href=”student.xsl”?>
这是指定加载一个xsl文件,因为我源文件和xsl文件都在同一目录下所以就直接写上文件名了。
下面来看一下运行结果
可能看起来还是不是那么好看(滑稽),但是你可以自己在table上加上一些css样式,让它变得好看起来。