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

通过XSLT转换XML的更多相关文章

  1. JaveScript 中使用 XSLT转换XML文档

    我们经常将数据存储在XML 中,在展示的时候需要转换为其它的形式,这里介绍使用XSLT 对XML数据进行转换. 要学习XSLT对XML的转换,需要先了解三个文件. 第一个是存储数据的XML文件:emp ...

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

    XSL即可扩展的样式表文件. 可以格式化xml的显示,也可以将xml转换成需要的另一种格式. 学习XSL必须熟悉XPath.XSL和XPath一样简单强大,容易学习. 1. XSL既然可以格式化xml ...

  3. xslt转换xml

    实现json--> xml --(xlst)--> xml pom依赖 <dependency> <groupId>net.sf.json-lib</grou ...

  4. 雷林鹏分享:使用 XSLT 显示 XML

    使用 XSLT 显示 XML 通过使用 XSLT,您可以把 XML 文档转换成 HTML 格式. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT(eXtensible ...

  5. 在java代码中用xslt处理xml文件

    java处理xml文件 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio ...

  6. 使用 XSLT 显示 XML

    通过使用 XSLT,您可以向 XML 文档添加显示信息. 使用 XSLT 显示 XML XSLT 是首选的 XML 样式表语言. XSLT (eXtensible Stylesheet Languag ...

  7. xStream完美转换XML、JSON

    xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换: 前面有介绍过json-lib这个框架,在线博文:htt ...

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

    TestLink对于测试用例的管理来说,是蛮强大的,但是在导入导出这块,功能有点弱,本文针对测试用例的导入,转载了一个Excel转换成xml工具. 1.根据到处的测试用例xml,定义一下我的Excel ...

  9. 转:TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码

    TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码 http://blog.csdn.net/candle806/article/details/7490599 以 ...

随机推荐

  1. NDK编译Python2.7.5

    [背景] 网上有一些ndk编译python的做法,但按照教程做总是不成功,可能是环境版本不一样,导致很多地方的配置都不成功. 网上的教程大多只有做法,没有解释,即使按照教程编译成功,很多细节都不知道为 ...

  2. mysql 超时 问题处理

    当数据库出现10055和10048错误时,处理办法: 第一 链接超时设置(1)打开注册表:regedit 找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ ...

  3. Tree 使用方式

    Traditional Ways of Tree Traversal This page contains examples of some “standard” traversal algorith ...

  4. php中的时区设置

    date_default_timezone_set('PRC'); 设置为中国时区

  5. python视频教程大全集下载

    python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV Python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...

  6. HoG feature for human detection(HoG 行人识别)

    本文大部分内容总结于其他文章 1.介绍 HOG(Histogram of Oriented Gradient)是2005年CVPR会议上,法国国家计算机科学及自动控制研究所的Dalal等人提出的一种解 ...

  7. 【转】Android 4.0.3 CTS 测试

    原文网址:http://blog.csdn.net/zxm317122667/article/details/8508013 Android-CTS 4.0.3测试基本配置 1. Download C ...

  8. 编译不通过:提示XXXX不是类或命名空间名 的解决办法

    手动写了一个类,需要引入预编译头stdafx.h.结果编译时提示XXXX不是类或命名空间名. 处理方法:将#include "stdafx.h"放在最前面.

  9. 自己实现的简单MVC框架(类似Struts2+Spring)

    一.框架简介 本框架是一个类似于Struts2+Spring的框架,目的在于个人钻研和技术分享,将流行技术框架Struts2.Spring中使用到的主要技术以较为简化的方式实现出来,给大家一个更直观的 ...

  10. c# 编程添加控件

    Button b = new Button();//创建一个新的按钮 b.Text = "test"; //添加到panel1中 panel1.Controls.Add(b);