通过XSLT转换XML
Hello,every body.又与大家见面了,哈哈。今天我与大家分享一下XSLT,XSL,XML,XPath.因为项目中有些功能用到了XSLT、XML等技术。所以今天好好研究了一下这几个方面的技术,宋桑说过嘛,要学会总结归纳。所以,要把自己学到东西写出来。一来温习一遍,二来与大家交流学习一下。
在研究这些技术的Demo中,发现有用唱片名字来做例子的。所以,无意中发现了一张唱片,发现了一个歌手。感觉不错,与大家分享一下。Bob Dylan----<Empire Burlesque>,很带感的一张专辑。在工作之余,可以听听放松一下自己的brain.Ok,书归正传。Let us Go
What is XML
XML:可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。理解这么枯燥乏味的定义真糟心的,大家不用去理解这句话。存在即合理,世上的任何事、任何人、任何技术,都有她存在的道理。在接触新东西时,一定要有这样的意识。学习技术,也是一样。去学习一个新技术时要先思考,她出现的历史原因、她为什么会出现、她出现解决了什么。我们什么时候会用到她呢?举个最常见的例子,AJAX,大家一定都接触过。当我们通过AJAX向服务器发送请求,有时是需要服务器返回内容的。服务器返回的内容,是以什么样的数据格式返回的呢?Json、XML,是最常用的两种数据格式。(Note:Json较XML更轻便灵活,但是本文旨在介绍XSTL转换XML。所以,大家如果对Json感兴趣的话,可以自行Bing.)
文字是很苍白无力的,那么上图吧:
这就是XML的一个例子,大家可以观察一下这张图片。很类似我们项目中的web.config文件的格式,一个开始标签必定对应一个结束标签。这也是XML的一个特点,结构很规范,方便阅读。
但是有一点大家要注意,XML严格区分大小写。当服务器想返回给我数据时,就可以采用XML的格式来传输。例如,我们需要从服务器返回数据库中一张存放书籍信息的表。那么服务器就可以讲数据编写成XML来返回客户端。例如:
<BookStore>
<Book>
<Category>小说</Category>
<Name>The God Father</Name>
<Authory>Mario Puzo</Authory>
<Price>$120</Price>
</Book>
<Book>
<Category>小说</Category>
<Name>The God Father</Name>
<Authory>Mario Puzo</Authory>
<Price>$120</Price>
</Book>
<Book>
<Category>小说</Category>
<Name>The God Father</Name>
<Authory>Mario Puzo</Authory>
<Price>$120</Price>
</Book>
<Book>
<Category>小说</Category>
<Name>The God Father</Name>
<Authory>Mario Puzo</Authory>
<Price>$120</Price>
</Book>
</BookStore>对于,XML大家只要知道她是个格式很规范、区分大小写的数据传输格式就OK了。她的用途就是来传输数据。
What is XSL
XSL:是可扩展样式表语言的外语缩写,是一种用于以可读格式呈现 XML(标准通用标记语言的子集)数据的语言。这个定义怎么去理解呢?首先来看看她为什么出现?她出现解决了什么原因?对于Web Developer来说,HTML与CSS的关系,应该都比较清楚。HTML相当于一张女孩子的脸,而CSS相当于女孩子用的化妆品。女孩子通过化妆品,可以把自己的脸变得beautiful。那么XSL就是XML的化妆品。我们从服务器获得的数据,是以XML格式呈现的。但是我们往往需要向用户展示的是HTML页面。所以,就需要转换XML,转换成我们想要的东西。可以是HTML、XHTML、XML。那么用什么转换呢?
XSL与XSLT是什么关系呢?XSL不仅仅是样式表语言,XSL包括三个部分:
一、XSLT----转换XML的语言。
二、XPath---一种用于在文档中导航的语言。
三、XSL-FO----一种用于格式化XML文档的语言。(Note:本文主要讲解通过XSLT转换XML,大家如果对XSL-FO感兴趣,可以自行BING)
在这里我给大家分析一下他们三者之间的关系,XSLT、XPath、XLT-FO她们三个是XSL的组成部分。XSL是通过XSLT语言对XML进行转换。XSLT是通过XPath语言来进行对XML元素的查找,如果把XML比作数据库,那么XPath就是SQL语句。XSL-FO,是用来格式化XML文档的。
What is XSLT
XSLT:在计算机科学中,XSLT是 扩展样式表转换语言 的外语缩写,这是一种对XML(标准通用标记语言的子集)文档进行转化的语言,XSLT中的T代表英语中的“转换”(Transformation)。它是XSL(eXtensible Stylesheet Language)规范的一部分。我们先来看一下XSLT可以为我们解决什么问题?
一、XSLT可以将XML类型的文件转换我们想要的任意文本类型文件。例如:HTML、XHTML、XML等。
二、她可以为我们修改XML文件。可以通过XSLT来向原XML添加元素、删除元素、添加属性、删除属性、可以控制他们的顺序结构等。
通常,我们把XSLT转换XML的过程称为,XSLT将XML的源树转换为XML的结果树。
What is XPath
XPath:XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。关于XPath的定义,我我们可以这样来理解她。所以的Web Developer对JQuery框架的命名原因都不会陌生,JQuery,顾名思义,J代表JavaScript脚本,Query的英文意思是查询。整个意思就是一套对HTML DOM元素查询的框架。所以JQuery的最重要的功能之一就是查询功能。而XPath跟JQuery的查询功能一样,只不过前者是对XML文档查询,而后者是对HTML Dom文档查询。这样来理解就OK了。XSLT在对XML进行转换时,就是通过XPath语言来进行查询的。
好了,XML、XSL 、XSLT、XPath的概念大家都清楚了。接下来通过例子,来学习XSLT转换XML。
首先,我们来创建一个XML文档,文档内容点击下面的链接:
http://www.w3school.com.cn/xsl/cdcatalog.xml
再创建一个XSL文档,文档内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th align="left">Title</th>
<th align="left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
好了,这两个文件就可以将我们的XML文档转换成我们想要的XHTML。这么转换呢?很简单,我们把XML文档当成HTML,把XSL文件当成CSS样式文件。把XSL文件拖入XML文件就可以了。让我们看看完成后的XML文档:
效果地址:http://www.w3school.com.cn/xsl/cdcatalog_with_xsl.xml
怎么样,是不是将结构化的XML转换为了我们熟悉的XHTML了。很简单的吧,如果你觉得这就是XSL的全部功能,那么你就大错特错了。XSL的功能是很强大的,跟着我继续学下去吧。
这是上面我们定义的XSL文档,我给大家分析一下这个XSL文档的结构,因为XSL样式表本身也是个XML文档,所以第一行的XML文档声明是必不可少的。第二行的含义是对XSL样式表的声明,“xmlns:xsl=’http://www.w3.org/1999/XSL/Transform’”这句话,引用XSLT的命名空间。只有引用了XSLT的命名空间,我们才能访问XSLT的元素、属性以及特性。这就像,当我们在C#中通过ADO.NET来连接数据库时,需要引用System.Data.SqlClient.SqlConnection命名空间。
<xsl:template>元素
<xsl:template match="/"> 元素定义一个模板。match是用来关联XML节点和模板的。match 属性也可用来为整个文档定义模板,match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。
<xsl:value-of>元素
<xsl:value-of>元素,用来提取某个选定节点的值,并把值添加到转换的流中输出。
<xsl:for-each>元素
<xsl;for-each>元素,可以用来循环指定节点集中的每个XML元素。
这就是XSLT转换XML格式的常用元素,还有一个高级元素,例如排序、选择、等等,大家感兴趣的可以自行BING。这里我就不细讲了,好了,就到这里吧。Good-bye!
通过XSLT转换XML的更多相关文章
- JaveScript 中使用 XSLT转换XML文档
我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换. 要学习XSLT对XML的转换,需要先了解三个文件. 第一个是存储数据的XML文件:emp ...
- C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例
XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml ...
- xslt转换xml
实现json--> xml --(xlst)--> xml pom依赖 <dependency> <groupId>net.sf.json-lib</grou ...
- 雷林鹏分享:使用 XSLT 显示 XML
使用 XSLT 显示 XML 通过使用 XSLT,您可以把 XML 文档转换成 HTML 格式. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT(eXtensible ...
- 在java代码中用xslt处理xml文件
java处理xml文件 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...
- 使用 XSLT 显示 XML
通过使用 XSLT,您可以向 XML 文档添加显示信息. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT (eXtensible Stylesheet Languag ...
- xStream完美转换XML、JSON
xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...
- TestLink学习七:TestLink测试用例Excel转换XML工具
TestLink对于测试用例的管理来说,是蛮强大的,但是在导入导出这块,功能有点弱,本文针对测试用例的导入,转载了一个Excel转换成xml工具. 1.根据到处的测试用例xml,定义一下我的Excel ...
- 转:TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码
TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码 http://blog.csdn.net/candle806/article/details/7490599 以 ...
随机推荐
- JavaScript优化参考
最近在为管理系统的网站做点优化,压缩都用了工具,就没太多可以讨论的. 主要还是代码上的精简和优化.稍微整理一下,顺便做点测试. 这里先贴上项目中用来替代iFrame的Ajax处理的局部代码,本人比较讨 ...
- ubuntu中安装openssh-server失败(首先ubuntu不能远程root登录)
ubuntu 安装openssh-server时,报依赖错误 解决方法: 更新软件 sudo apt-get update 如果报校验和不符错误:(此错误为部分网址被墙)如图 解决方法如下 ...
- 一个支持实时预览的在线 Markdown 编辑器 - Markdoc
最近组内需要为一些项目和系统写文档,发表在公司内的文档平台上,这个平台并不支持markdown,所以打算做一个在线markdown编辑器,支持实时预览,并且可以很容易的迁移发表到公司文档平台上,所以就 ...
- Common Subsequence--poj1458(最长公共子序列)
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43211 Accepted: 17 ...
- jquery中checkbox全选失效的解决方法
这篇文章主要介绍了jquery中checkbox全选失效的解决方法,需要的朋友可以参考下 如果你使用jQuery 1.6 ,代码if ( $(elem).attr(“checked”) ),将 ...
- NFine常见错误
1.新增数据录入录入不进去提示:An error occurred while updating the entries.See the inner exception for details. 这样 ...
- nginx日志管理与限速
1.日志简介nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日志 ...
- AutoCompleteTextView 与sqlite绑定实现记住用户输入的内容并自动提示
把用户输入的内容保存到数据库表中,然后用户输入时,进行模糊查询并把查询结果附到AutoCompleteTextView中. 1:activity_main.xml <LinearLayout x ...
- LeetCode_Permutations II
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- 单片机C 语言与汇编语言混合编程
在单片机应用系统设计中,过去主要采用汇编语言开发程序. 汇编语言编写的程序对单片机硬件操作很方便,编写的程序代码短,效率高,但系统设计的周期长,可读性和可移植性都很差.C语言程序开发是近年来单片机系统 ...