XSLT模板转换XML文档
XML文档只能表现数据的内容,而实际的数据则是要呈现在网页中的。使用CSS可以格式化XML文档,使它显示出来,这个内容在上一篇中已经做了详细的说明。除了CSS外,还有一种语言也可以在网页中表现出XML数据内容,那就是XSL。XSL语言包括XSLT(XSL Transformation)和FO(Format Object)。XSLT文档可以将XML文档转化为其它文档形式,如HTML、Text等。FO用于格式化输出,由于W3C对FO还形成统一标准,这里将只说明XSLT的用法。
使用XSLT时最重要的部分是选择XML节点值和创建模板。创建模板使用的标签是<xsl:template></xsl:template>,通常这个标签需要一个match属性,用来确定它所匹配的XML节点。选择XML节点值使用的标签是<xsl:value-of />,这个标签需要select属性来确定它匹配的XML节点。下面将用一个简单的例子说明,看下面的XML文档:
1 <?xml version="1.0" encoding="utf-8"?>
2 <?xml-stylesheet type="text/xsl" href="stylesheet.xslt"?>
3 <xml>
4 <book>
5 <name>Xml应用系列</name>
6 <author>学路的小孩</author>
7 <date>2009-03-23</date>
8 </book>
9 </xml>
代码说明:第一行是XML文件的声明部分;第二行声明引入XSLT文件,type属性说明文件的类型是text/xsl,href属性指向一个XSLT文件,文件名为stylesheet.xslt。第三行以后为XML文档部分。下面是stylesheet.xslt的内容:
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <xsl:template match="/">
4 <html>
5 <head>
6 <title>第一个XSLT文件</title>
7 </head>
8 <body>
9 <xsl:apply-templates select="xml"></xsl:apply-templates>
10 </body>
11 </html>
12 </xsl:template>
13 <xsl:template match="xml">
14 <table style="background-color:orange">
15 <tr>
16 <th>书名</th>
17 <th>作者</th>
18 <th>日期</th>
19 </tr>
20 <xsl:apply-templates select="book"></xsl:apply-templates>
21 </table>
22 </xsl:template>
23 <xsl:template match="book">
24 <tr>
25 <td>
26 <xsl:value-of select="name"/>
27 </td>
28 <td>
29 <xsl:value-of select="author"/>
30 </td>
31 <td>
32 <xsl:value-of select="date"/>
33 </td>
34 </tr>
35 </xsl:template>
36 </xsl:stylesheet>
代码说明:由于XSLT文档的格式依然是XML格式,所以第一行为XML的头部声明;第二行则是XSLT的版本和命名空间声明,并且该标签是XSLT文档的跟节点。第三行使用<xsl:template></xsl:template>创建一个模板,select="/"表示匹配的是文档的根节点。第四行到第十一行是这个节点要生成的HTML节点信息,其中第九行<xsl:apply-templates />标签表示应用模板,其中select="xml"表示要调用的模板为匹配XML节点的模板,这个模板在第十三行出现。后面的所有行(除了第26行等)无非是这些内容的重复,不做太多介绍。第二十六行是选择name标签的内容。使用IE打开XML文件,显示内容如下:
另外,XSLT还具有流程控制、条件选择、循环处理、元素排序等功能。下面通过一个实例来说明,其中XML文档内容如下:
1 <?xml version="1.0" encoding="utf-8" ?>
2 <?xml-stylesheet type="text/xsl" href="bookListStyle.xslt"?>
3 <bookList>
4 <category type="计算机">
5 <book id="1">
6 <title>网页与Web程序设计</title>
7 <author>吴利兵</author>
8 <pubInfo>
9 <publisher>机械工业出版社</publisher>
10 <pubDate>2009-04-01</pubDate>
11 <price>16.50</price>
12 </pubInfo>
13 </book>
14 <book id="2">
15 <title>软件工程</title>
16 <author>邓良松</author>
17 <pubInfo>
18 <publisher>西安电子科技出版社</publisher>
19 <pubDate>2005-06-10</pubDate>
20 <price>33.20</price>
21 </pubInfo>
22 </book>
23 </category>
24 <category type="小说">
25 <book id="3">
26 <title>茶花女</title>
27 <author>小仲马</author>
28 <pubInfo>
29 <publisher>外语出版社</publisher>
30 <pubDate>2005-06-30</pubDate>
31 <price>22.00</price>
32 </pubInfo>
33 </book>
34 <book id="4">
35 <title>红楼梦</title>
36 <author>曹雪芹</author>
37 <pubInfo>
38 <publisher>中国教育出版社</publisher>
39 <pubDate>2005-09-06</pubDate>
40 <price>55.00</price>
41 </pubInfo>
42 </book>
43 </category>
44 </bookList>
bookListStyle.xslt文件的内容如下:
<?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>
<head>
<title>图书列表</title>
<style>
<![CDATA[
body,td,th{
font-size:10pt;
font-family:宋体;
}
body{
background-color:#c0c0c0;
}
table{
border:solid red 1px;
margin-left:30px;
margin-right:30px;
background-color:#ffffc0;
cellPadding:4;
}
]]>
</style>
</head>
<body>
<table>
<caption align="top" style="font-weight:bold; text-align:left">图书列表</caption>
<tr style="color:#8b0000" align="left">
<th width="5%">编号</th>
<th width="10%">类别</th>
<th width="25%">书名</th>
<th width="20%">作者</th>
<th width="25%">出版社</th>
<th width="10%">出版日期</th>
<th width="5%">定价</th>
</tr>
<xsl:for-each select="bookList/category/book">
<xsl:sort select="pubInfo/price" order="descending"/>
<tr>
<xsl:attribute name="style">
color:
<xsl:if test="../@type[.='计算机']">blue</xsl:if>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="title"/>
<xsl:choose>
<xsl:when test="../@type[.='计算机']">
类别:计算机类图书
</xsl:when>
<xsl:otherwise>
类别:小说类图书
</xsl:otherwise>
</xsl:choose>
作者:<xsl:value-of select="author"></xsl:value-of>
<br/>
出版社:<xsl:value-of select="pubInfo/publisher"/>
<br/>
出版日期:<xsl:value-of select="pubInfo/pubDate"/>
<br/>
定价:<xsl:value-of select="pubInfo/price"/>元
</xsl:attribute>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="../@type"/>
</td>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="pubInfo/publisher"/>
</td>
<td>
<xsl:value-of select="pubInfo/pubDate"/>
</td>
<td>
<xsl:value-of select="pubInfo/price"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
这里不再对代码进行分析,请读者自己理解这段代码,并动手写一下自己的XSLT模板。这段代码的运行效果如下图:
欢迎转载,但请保留本段信息!
如果认为此文对您有帮助,别忘了支持一下哦!
XSLT模板转换XML文档相关推荐
- 【Win 10应用开发】Adaptive磁贴模板的XML文档结构
原文:[Win 10应用开发]Adaptive磁贴模板的XML文档结构 在若干天之前,老周给大家讲了Adaptive Toast通知的XML模板,所以相应地,今天老周给大家介绍一下Adaptive磁贴 ...
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构...
分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...
- Jaxb2 转换XML文档
--完成Java对象和XML相互转换 前面有介绍过json-lib这个框架,在线博文:http://www.cnblogs.com/hoojo/archive/2011/04/21/2023805.h ...
- c#中使用XSLT将xml文档转换为html文档方法
c#使用XSLT将xml文档转换为html文档 使用xslt可以将xml文档转成html,如下c#函数: 需要引用下面的命名空间: using System.Xml; using System.Xml ...
- c# 修改xslt并转为html,c#使用XSLT将xml文档转换为html文档
c#使用XSLT将xml文档转换为html文档 使用xslt可以将xml文档转成html,如下c#函数: 需要引用下面的命名空间: using System.Xml; using System.Xml ...
- XSLT实现XML文档转换成HTML文档
XML文档描述了数据的结构,并且可以用自定义的标记元素描述数据意义,而且实现了记录数据的功能.如果想要将XML的数据显示在网页页面上,如何做呢? 最简单的方式就是将XML文件直接用浏览器打开,在记事本 ...
- XML——写出XML文档(XSLT+StAX)
[0]README 0.1) 本文描述部分转自 core java volume 2 , 旨在理解 XML--写出XML文档(XSLT+StAX) 的基础知识 : 0.2) for source co ...
- xml 文本转json java_java将XML文档转换成json格式数据
本篇文章主要介绍了java将XML文档转换成json格式数据的示例,希望能帮助到大家. 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具 ...
- java xml转html_如何在Java中将XML文档转换成HTML文档.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > 网页设计/UI 如何在Java中将XML文档转换成HTML文档. ...
最新文章
- 上海交大发布 MedMNIST 医学图像分析数据集 新基准
- 周志华《机器学习》课后习题(第三章):线性模型
- c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别
- IOS之使用AwesomeMenu框架令人惊叹的菜单
- postgresql+postgis安装
- FCPX插件Day of the Dead Titles - 恐怖风格文本动画模板
- Java装饰器模式详解
- 用筷子吃汉堡?汉堡王新广告被指种族歧视 网友:想成为下一个DG?
- python知识点查阅
- VC6-VC2008转移到VC2015问题记录
- java出名的外国文献_三大牛人看外国文献的方法(搜索无重复) - 论文投稿 - 小木虫 - 学术 科研 互动社区...
- 解析京东大数据下高效图像特征提取方案
- CSP 201809-1 卖菜
- Stimulsoft.Report的代码实现功能自学整理(一)
- 国标GB28181视频流媒体平台4G摄像头无插件直播平台EasyGBS出现实时视频点播错误问题解析
- 毒蘑菇导航,感觉不像是毒蘑菇,更像是个树莓了。
- 厦大C语言上机1381
- 小程序和H5有什么区别?
- 链路层--->ETH(以太网)协议
- 《2022微隔离技术与安全用例研究报告》发布