码迷,mamicode.com
首页 > 其他好文 > 详细

如何控制XML文档的样式

时间:2014-11-10 13:24:04      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   sp   for   文件   数据   

xml文档是纯文本文件,虽然内容是完全自定义的,但显示的效果就差强人意了,那么是否可以让xml文档也像html文档那样可以有丰富多彩的显示效果呢?当然可以,html文档是通过css文档来控制显示样式的,xml文档可以通过xsl文档来控制,其实质就是把xml文档通过xslt(xsl transformations)转换成html文档,或者比html更严谨的xhtml文档。

那么如何读取xml文档中的数据呢?下面通过一个例子来实验一下:

首先看一下最原始的xml文档:

 1 <?xml version="1.0"?>
 2 <team>
 3     <people type="teacher" id="2">
 4         <name>zhangsan</name>
 5         <gender>f</gender>
 6     </people>
 7     <people type="teacher" id="5">
 8         <name>lisi</name>
 9         <gender>m</gender>
10     </people>
11     <people type="student" id="1">
12         <name>wangwu</name>
13         <gender>f</gender>
14     </people>
15     <people type="teacher" id="3">
16         <name>zhaoliu</name>
17         <gender>f</gender>
18     </people>
19     <people type="teacher" id="1">
20         <name>maqi</name>
21         <gender>m</gender>
22     </people>
23 </team>

接下来,先搭一个xsl文档的基本框架:

 1 <?xml version="1.0"?>
 2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 3 <xsl:template match="/">
 4     <html>
 5         <body>
 6             <h2>Team People Collection</h2>
 7             <table border="1">
 8                 <tr bgcolor="#9acd32">
 9                     <th align="left">Name</th>
10                     <th align="left">Gender</th>
11                 </tr>
12             </table>
13         </body>
14     </html>
15 </xsl:template>

xsl文档本身其实也是个xml文档,所以最开始也需要xml声明。

现在的xsl文档只是个空架子,因为里面并没有获取xml文档的数据,接下来看如何填充数据。

通过<xsl:value-of select="team/people/name" /> 可提取select选定节点的值,并添加到转换的html文档中。

但这样只能获取一行的数据,如果有很多people节点,如何全都获取呢?

再来看<xsl:for-each select="team/people"></xsl:for-each>可遍历select选定节点的值。

数据都取出来了,我们还想再排下序,没问题,在<xsl:for-each>下添加子节点<xsl:sort select="name">。

但可能有些并不是我们想要的,可以通过<xsl:for-each select="team/people[name=‘zhangsan‘]">过滤xml中的元素。

注意过滤运算符有:

= 等于

!= 不等于

&lt; 小于

&gt; 大于

现在的xsl文档变成了下面的样子:

 1 <?xml version="1.0"?>
 2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 3 <xsl:template match="/">
 4     <html>
 5         <body>
 6             <h2>Team People Collection</h2>
 7             <table border="1">
 8                 <tr bgcolor="#9acd32">
 9                     <th align="left">Name</th>
10                     <th align="left">Gender</th>
11                 </tr>
12                 <xsl:for-each select="team/people[name=‘zhangsan‘]">
13                 <xsl:sort select="name"/>
14                     <tr>
15                         <td><xsl:value-of select="name"/></td>
16                         <td><xsl:value-of select="gender"/></td>
17                     </tr>
18                 </xsl:for-each>
19             </table>
20         </body>
21     </html>
22 </xsl:template>
23 </xsl:stylesheet>

xsl文档完成了,最后在xml文档中引入此xsl文档即可,最后的xml文档如下:

 1 <?xml version="1.0"?>
 2 <?xml-stylesheet type="text/xsl" href="XSLTDemo.xsl"?>
 3 <team>
 4     <people type="teacher" id="2">
 5         <name>zhangsan</name>
 6         <gender>f</gender>
 7     </people>
 8     <people type="teacher" id="5">
 9         <name>lisi</name>
10         <gender>m</gender>
11     </people>
12     <people type="student" id="1">
13         <name>wangwu</name>
14         <gender>f</gender>
15     </people>
16     <people type="teacher" id="3">
17         <name>zhaoliu</name>
18         <gender>f</gender>
19     </people>
20     <people type="teacher" id="1">
21         <name>maqi</name>
22         <gender>m</gender>
23     </people>
24 </team>

注:此处xml文档和xsl文档放在了同一个文件夹下。

现在,在浏览器中打开xml文档就可以看到不一样的效果了,快来试试吧!

如何控制XML文档的样式

标签:style   blog   http   io   color   sp   for   文件   数据   

原文地址:http://www.cnblogs.com/qql1986/p/4086483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!