通过XSLT转换XML

Hellow,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)。它是XSLeXtensible
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!

时间: 2024-08-24 19:25:05

通过XSLT转换XML的相关文章

JaveScript 中使用 XSLT转换XML文档

我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换. 要学习XSLT对XML的转换,需要先了解三个文件. 第一个是存储数据的XML文件:employees.xml <?xml version="1.0"?> <employees> <employee title="Software Engineer"> <name>Nicholas C. Zakas</n

.Net中用XSLT转换XML文档

在开发中我们经常用到xml文件作为数据的载体.当我们获取到一个XML文件后常常要将其数据提取出来或者将其转换为另一种格式,此时我们需要用到XSLT. XSLT的全称是Extensible Stylesheet Language Transformations(可扩展样式表转换语言),其最常用的功能就是将XML从一种格式转换为另一种格式.本文中我们将把一个承载Famous People信息的xml文件转换成html文件.在.NET中可以使用XslCompiledTransform类加载XSLT文档

C#操作Xml:XSLT语法 在.net中使用XSLT转换xml文档示例

XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml的显示样式,我们先来看如何在xml中引用xsl文件 如下代码示例: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="

xslt转换xml

实现json--> xml --(xlst)--> xml pom依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <

xslt 转换 xml

import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import ja

使用 XSLT 显示 XML

通过使用 XSLT,您可以向 XML 文档添加显示信息. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT (eXtensible Stylesheet Language Transformations) 远比 CSS 更加完善. 使用 XSLT 的方法之一是在浏览器显示 XML 文件之前,先把它转换为 HTML,正如以下的这些例子演示的那样: 查看 XML 文件,XSLT 样式表,查看结果. 下面是此 XML 文件的一个片断. 第二行,<?xml-stylesh

TestLink学习七:TestLink测试用例Excel转换XML工具

最近在整理测试用例,所以想找一个合适的工具来完成对测试需求.测试用例的管理.对比了一翻,发现开源工具中扩展比较好的还属TestLink,而且还可以与JIRA进行对接,这样就引起了我更大的兴趣.加上之前本来就接触过此工具,只是源于各种原因没能深入去研究来着,这次也就是决心于此!于是就找来了Testlink的最新版1.9.3,将其搭建在Ubuntu Server上,很快我们就可以正常方访问了.不过说实话,Testlink界面确实很难看,不过毕竟它不是商业工具,而且可以自己去扩展并定制开发,这就是最大

xStream完美转换XML、JSON

xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 它们都完美支持JSON,但是对xml的支持还不是很好.一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象的描述.这里将会介绍xStream对JSON.XML的完美支持.xStream不仅对XML的转换非常友好,而且提供annotation注解,可以在JavaBean中完成对xml节点.属性的描述.以及对JSON也支持,只需要提供

[c# 20问] 2.如何转换XML文件

添加System.Xml引用 使用XmlReader转换字符串 DEMO #region Parse Xml private static void ParseXml(string xmlString) { StringBuilder output = new StringBuilder(); using(XmlReader reader= XmlReader.Create(new StringReader(xmlString))) { reader.ReadToFollowing("book&