XSLT学习
XSL 语言
XSL(eXtensible Stylesheet Language)是可扩展样式表语言,是一种用于以可读格式呈现 XML(标准通用标记语言的子集)数据的语言。
XSL与xml
CSS = HTML 样式表
HTML 使用预先定义的标签,每个标签的意义很容易被理解。
HTML 中的 <table> 标签定义表格 - 并且浏览器清楚如何显示它。
向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。
XSL = XML 样式表
XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且每个标签的意义并不都那么容易被理解。
<table> 标签意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。
XSL 可描述如何来显示 XML 文档!
XSL - 不仅仅是样式表语言
- XSLT - 一种用于转换 XML 文档的语言。
- XPath - 一种用于在 XML 文档中导航的语言。
- XSL-FO - 一种用于格式化 XML 文档的语言。
(XSLT 指 XSL Transformation,专门用于进行XML数据转换(data transformation)。XSL是XSLT的前身,本来包含了XML数据表达(data presentation)和数据转换两个目的。由于两个目的截然不同,数据转换部分就逐渐从中独立出来成为一个新的建议(XSLT, W3C Recommendation 16 November 1999)。剩下的数据表达部分成为XSL-FO, XSL Formatting Object,目前还是草案。现在称XSL有人指XSLT,有的人指XSL-FO,所以要区分清楚。)
Xslt简介
Xslt是Extensible Stylesheet Language Transformations的缩写,用来将XML 文档转换到其它文档类型。
XSLT用于将一种XML文档转换为另外一种XML文档,或者可被浏览器识别的其他类型的文档,比如HTML和XHTML。通常,XSLT是通过把每个XML元素转换为(X)HTML元素来完成这项工作的。通过XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素。描述转化过程的一种通常的说法是,XSLT把XML源树转换为XML结果树。
XSLT的本质类似于CSS,只不过它是专门用来处理XML文档,相当于XML样式表。XML只注重数据的表现内容,而不注重表现形式,XSLT就是用来表现数据的形式。
Xslt功能
1 解释XML标签
这是XSLT最重要的作用。由于 XML 标签是用户定义的,XML 标签的意义是为了方便用户(而不是计算机)理解。比如在XML中定义一个Table标签,计算机不知道是要将它展现为一个表格,还是展现为一个桌子。所以就要使用XSLT,向计算机解释这个标签的意义。
2 其他作用
XSLT 还可以对 XML 进行下列操作:
l 添加和删除元素
l 添加和删除属性
l 对元素进行重新排列或排序
l 隐藏或显示某些元素
l 查找或选择特定元素
总的来说Xslt最主要的功能是转化,描述转化过程的一种通常的说法是,XSLT 把 XML 源树转换为 XML 结果树。其他,还具有流程控制、条件选择、循环处理、元素排序等功能。
Xslt语法
1 Xslt声明
声明:<xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform>
2 Xslt元素
Xslt元素一般都有Xls:前缀,因为存在于xmlns:xsl命名空间。
常用的Xslt元素有:
- 1. <xsl:template math="/"> </xsl:template>
元素定义了一个模板。而 math="/" 属性则把此模板与 XML 源文档的根相联系。
- 2. <xsl:apply-templates />
可把一个模板应用于当前的元素或者当前元素的子节点.
- 3. <xsl:value-of select="[XPath expression]" />
提取某个选定节点的值,并把值添加到转换的输出流中。[XPath expression]表示提取节点的XPath路径
- 4. <xsl:for-each select="[XPath expression]"> </xsl:for-each>
用于选取指定的节点集中的每个XML元素
select可以使用设置过滤条件来进行查询:
> 大于
< 小于
= 等于
!= 不等于
例如:<xsl:for-each select="catalog/cd[Price > 10]">...</xsl:for-each>
还可以使用XPath的模糊查询:
例如:
<xsl:for-each select="catalog/cd[contains(author='Bob.Dylan')]">...</xsl:for-each>
如果是属性内容,则用这样的表达式:
<xsl:for-each select="catalog/cd[contains(@author='Bob.Dylan')]">...</xsl:for-each>
- 5. <xsl:sort select="[XPath expression]" />
对结果进行排序,只要简单地在 XSL文件中的<xsl:for-each>元素内部添加一个 <xsl:sort>元素就可以了。
- 6. <xsl:if test="expression"></xsl:if>
在<xsl:for-each>内部添加,实现判断功能,test为条件表达式:
<xsl:for-each select="catalog/cd">
<xsl:if test="price < 20">...</xsl:if>
</xsl:for-each>
- 7. <xsl:choose>
包含在foreach循环中,多重条件判断语句。
格式如下:
<xsl:for-each select="catalog/cd">
<xsl:choose>
<xsl:when test="expression1">
.....
</xsl:when>
<xsl:when test="expression2">
.....
</xsl:when>
<xsl:otherwise>
.....
</xsl:otherwise>
</choose>
</xsl:for-each>
- 8. <xsl:variable>
声明一个变量,用于声明局部或全局的变量。如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是本地的。
3 Xslt函数
XSLT中使用的函数分为两类,一类是XSLT内置的函数,一类是XPath函数。内置函数是XSLT自带的函数,而XPath函数是XPath规范定义的函数。
内置函数:
XSLT含有超过100个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName操作、序列操作、逻辑值等,不过内置函数在我们的项目中用到的很少。内置函数的命名空间是:http://www.w3.org/2005/02/xpath- functions,默认前缀是fn。
常用的内置函数有:
current() 函数返回仅包含当前节点的节点集,通常,当前节点与上下文节点是相同的。在语法上<xsl:value-of select="current()"/>等同于<xsl:value-of select="."/>。后者用的是xpath方法。
format-number() 比如:函数用于把数字转换为字符串。 <xsl:value-of select= 'format-number(500100, "###,###.00")' />
XPath函数
用到的xpath函数有:
string(arg) 返回参数的字符串值
compare(comp1,comp2) 字符串的比较
concat(string,string,...) 字符串的拼接
substring(string,start,len) 返回从 start 位置开始的指定长度的子字符串
string-length(string) 返回指定字符串的长度
position() 返回当前正在被处理的节点的 index 位置
last() 返回在被处理的节点列表中的项目数目。
4 Xslt模板
XSL 样式表由一个或多套被称为模板(template)的规则组成。每个模板含有当某个指定的节点被匹配时所应用的规则。
- 模板的定义是<xsl:template> 元素,模板内部定义了该元素以什么方式显示出来。match 属性用于关联 XML元素和模板,也就是对这个元素使用这个模板。比如:
<xsl:template match="/ns5:TemporaryPermitTable">
- 2. 模板的应用是<xsl:apply-templates /> 元素,可向当前元素或当前元素的子元素应用模板。select 属性表示它仅会处理匹配该属性的值的子元素。
使用 select 属性来规定处理子节点的顺序。首先执行默认模板(<xsl:template match="/">),接下来依次处理每一个模板
xsl:apply-templates总是包含在xsl:template元素中的。
XSLT学习的更多相关文章
- XSLT学习(九)通过JavaScript转化xml
如果您的浏览器支持 XSLT,那么在浏览器中它可被用来将文档转换为 XHTML. JavaScript 解决方案 在前面的章节,我们已向您讲解如何使用 XSLT 将某个 XML 文档转换为 XHTML ...
- xslt基础学习
今天下午工作完成没事,登w3c的网站学习了一下xslt的基础知识,主要是因为工作中xml用的比较多,xslt也有用到,所以在这里学习一下. XSLT:一种用于转换 XML 文档的语言. XSLT 用于 ...
- XSL学习笔记4 XSLT模式匹配的语法
模板规则通过使用模式来匹配文档树的节点.模式指定一组条件,用于选择要处理的节点. 模式匹配的语法不光可以在<xsl:template>元素的match属性中使用,还可以在<xsl ...
- 学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)
转自:http://blog.csdn.net/crystalbruce/article/details/7401602 XSLT分为两类: 1:客户端转换:需要浏览器的支持. 2:服务器转换:需要使 ...
- Office365学习笔记—Xslt自定义列表视图
1,在Office365中需要添加自定义的视图!用Spd添加视图,这儿我添加一个testView! (1)打开testView.aspx将</ZoneTemplate>节点中的内容全部删除 ...
- 最新JavaScript、Ajax典藏级学习资料下载分类汇总 (2011年12月21日更新)
其他网站开发相关资料 超强HTML和xhtml,CSS精品学习资料下载汇总 最新htm ...
- java学习流程
J2SE 面向对象-封装.继承.多态内存的分析递归集合类.泛型.自动打包与解包.Annotation IO 多线程.线程同步 TCP/UDP AWT.事件模型.匿名类 正则表达式反射机制 2:数据库( ...
- J2EE学习路线图
一:J2SE 面向对象-封装.继承.多态 内存的分析 递归 集合类.泛型.自动打包与解包.Annotation IO 多线程.线程同步 TCP/UDP AWT.事件模型.匿名类 正则表达式 反射机制 ...
- XML学习笔记6——XPath语言
在上一篇笔记的结尾,我们接触到了两个用于选择XML文档中特定范围的元素<selector>和<field>,这两个元素的取值都是XPath表达式,那么,什么是XPath呢?简单 ...
随机推荐
- 【开源java游戏框架libgdx专题】-02-Eclipse Gradle 环境安装
创建eclipse开发环境 Eclipse 4.5 Help -> install newsoftware 填上下载地址(Eclipse 4.5及以上版本): http://dist.sprin ...
- Sniffer抓包教程
上网络信息安全的时候用了下,中途出现了一堆奇葩的事,这里就不提了... 上教程: 先把虚拟机里面的防火墙给关了,主机防火墙也关了 之前由于ip自己设置了,然后一直ping不通,后面把ip改成自动获取就 ...
- 织梦DedeCMS广告管理模块增加图片上传功能插件
网站广告后台管理非常方便,但是织梦后台的广告管理模块,发布广告时图片没有上传选项,只能用URL地址,很不方便,那么下面就教大家一个方法实现广告图片后台直接上传,非常方便. 先给大家看下修改后的广告图片 ...
- 移动Web开发技巧
META相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题" ...
- 关于myeclipse中导入的项目修改项目名使得发布到tomcat访问路径正确
我新的项目基于旧的的项目,在Myeclipse8.6里我复制了一个,但是在部署到tomcat7.0时部署过去的文件夹名还是原来的旧项目名,不是新的,但里面内容为新项目,是不是什么地方没有改.求救各位高 ...
- Android开发手记(24) Log的使用及颜色的更改
在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以用于程序调试,也可以用于产品运营中的事件记录.在Android系统中,提供了简单.便利的LOG机制,开发人员可以方便地使用.本文 ...
- Directory类
string[] pathes = Directory.GetDirectories(@"G:\ReawFiles");//获得所有的文件夹 string[] pathes = D ...
- gephi安装好了,为何打不开?
ref: http://www.zhihu.com/question/21268129?sort=created 这个软件我自己也没有弄过,不过我同学要不会装,所以我测试地帮她装,得益于这个哥们的发的 ...
- Hibernate 主键生成策略
表示符生成器 描述 Increment 由hibernate自动以递增的方式生成表识符,每次增量为1 Identity 由底层数据库生成表识符.条件是数据库支持自动增长数据类型. Sequence H ...
- 【USACO 3.3.2】商品购物
[描述] 在商店中,每一种商品都有一个价格(用整数表示).例如,一朵花的价格是 2 zorkmids (z),而一个花瓶的价格是 5z .为了吸引更多的顾客,商店举行了促销活动. 促销活动把一个或多个 ...