`

xsl语言简易教程

阅读更多
XSL 语言
它以XSL为开始,以XSLT,XPath和XSL-FO为终结。
以XSL为开始
XSL表示扩展样式表语言(EXtensible Stylesheet Language)。
因为基于XML样式表语言的需要,万维网联盟(W3C)开始着手发展XSL。
层叠式样式表(CSS)= HTML样式表
HTML使用预定义标签,并且,标签的含义比较容易理解。
在HTML中,<table>元素定义了一个表格,并且,浏览器知道该如何去显示它。
给HTML元素添加样式是比较容易的。通过使用CSS,让浏览器显示具有特殊字体和颜色的元素是非常容易的。
XSL=XML样式表
XML不使用预定义标签(我们可以使用任何我们自己喜欢的标签名字),这些标签的含义并不容易理解。
HTML中的<table>元素适用于定义一张表格的,因此浏览器知道该如何去显示它们。
给HTML元素添加样式是比较容易的。通过使用CSS,让浏览器显示具有特殊字体和颜色的元素是非常容易的。
XSL-扩展样式表语言(More Than a Style Sheet Language)
XSL由3部分组成:
XSLT-转变XML文档的语言。
XPath-对XML文档进行导航的语言。
XSL-FO - 格式化XML文档的语言。
关于XSLT的教程
剩下这部分的教程是关于XSLT的——转换XML文档的语言。
XSLT 介绍
XSLT是一种把XML文件转换成XHTML文档或者其他的XML文档的语言。
XPath是一种用于导航XML文档的语言。
你应该事先了解下面这些知识
如果你想继续下面的学习,你必须得掌握下面这些基本知识。
XML / XML 命名空间
XPath
如果你想学习上述语言,可以在网络学院找到这些教程.
什么是XSLT?
XSLT是一种用来转换XML / XSL文档结构的语言
XSLT是XSL最重要的部分
XSLT可以把XML文档转换成另一个XML文档
XSLT通过XPath对XML文档进行定位
XSLT是一种W3C推荐标准
XSLT=XSL转换
XSLT是XSL的最重要的一部分。
XSLT用于把XML文档转换成其它的XML文件,或者转换成另一种能被浏览器所识别的诸如HTML和XHTML类型的文档。通常情况下,XSLT是通过把每个XML元素转换成一个(X)HTML元素来完成的。
通过XSLT,你可以在已输出的文件里添加或删除元素和属性。你也可以把元素重新进行排列和分类,执行测试语句,决定是否隐藏元素,或者实现其它更多的功能。
我们通常这样来描述转换过程:XSLT把XML树形结构源文件换成XML树形结果。
XSLT使用XPath的方法
XSLT使用XPath查找XML文档中的信息。XPath用于对XML文件中的元素和属性进行定位或导航。
如果你想先学习XPath的相关知识,请先阅读我们的XPath教程.
它是怎样运行的?
在转换过程当中,XSLT使用XPath来定义源文档的某些部分,而这些源文档必须与一个或多个预定义的模版相匹配。当其中一个所匹配的源文件被找到以后,XSLT将会把这个源文件中相匹配的部分转换到结果文档中。
XSLT是一个网络标准
XSLT在1999年11月16日成为W3C推荐的标准。
XSLT 浏览器
几乎所有专业浏览器都支持XML和XSLT。
Mozilla Firefox
Mozilla火狐
1.0.2版本的火狐浏览器是支持XML和XSLT 的(以及CSS)。
Mozilla
Mozilla含有XML外部解析器并且支持XML+CSS的显示,同时,Mozilla也支持一些命名空间。
Mozilla可以执行XSLT。
Netscape
Netscape版本8使用的是Mozilla引擎,因此它和Mozilla一样支持XML / XSLT。
Opera
Opera版本9 ,支持XML和XSLT(以及CSS);Opera版本8只支持XML+CSS。
Internet Explorer
IE6浏览器支持XML,命名空间,CSS,XSLT和XPath。
IE5.0并不支持官方的W3C XSL推荐标准。
XSLT 转换
周日, 10/14/2007 - 14:21 — ppkosd
Example study: How to transform XML into XHTML using XSLT.
实例学习:如何通过XSLT把XML转换成XHTML。
此实例的详细情况将在下一章中作详细说明。
正确的样式表声明
我们使用根元素<xsl:stylesheet> 或<xsl:transform>对XSL样式表文档进行声明。
注意: <xsl:stylesheet> 和<xsl:transform>是完全相同的,使用哪一个都可以。
根据W3C XSLT 的推荐标准,声明 XSL 样式表的正确方法如下:
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
或:
<xsl:transform version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
如果希望访问XSLT元素、属性和特征,那么,我们必须在文件的头部事先声明XSLT命名空间。
“xmlns:xsl="http://www.w3.org/1999/XSL/Transform” 指出了官方的W3C XSLT 命名空间。如果你使用了这个命名空间,你也必须注明属性版本“version="1.0"。
以XML源文件开始
让我们把下面的XML文档("cdcatalog.xml")转换成XHTML吧:
<?xml version="1.0" encoding="ISO-8859-1"?><catalog><cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year></cd>...</catalog>
在火狐和IE浏览器中查看XML文件的方法: 打开XML文件(通常情况下是通过链接打开的)—XML文件将会显示包含颜色代码的根元素和子元素。单击左边元素的“+”和“-”,就可以展开或者收回元素结构列表。查看XML源文件的源代码(不含加号+和减号-),在浏览器菜单里选择“查看—源文件[ IE ]”或者“查看—页面源代码[ FF ]”。
在Netscape 6中查看XML文件的方法:打开XML文件,在XML文件里右键单击选择“查看—页面源代码”。XML文件将会把标有颜色代码的根元素和子元素的文档显示出来。
在Opera 7中查看XML文件的方法: 打开XML文件,在XML文件里右键单击选择“框架/查看源代码”。XML文件将会以纯文本的形式显示。
查看 "cdcatalog.xml"
创建一个XSL样式表
此时,你已经通过一个转换模板创建了一个XSL样式表文档("cdcatalog.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>
查看"cdcatalog.xsl"
将XSL样式表连接到XML文档中
把XSL样式表参数添加到XML文件("cdcatalog.xml")中:
<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?><catalog> <cd><title>Empire Burlesque</title><artist>Bob Dylan</artist><country>USA</country><company>Columbia</company><price>10.90</price><year>1985</year> </cd> . . . </catalog>
如果你有一个支持XSLT的浏览器,它将会准确地帮你把XML文件转换成XHTML。
查看结果
以上实例的细节部分将会在下一章中作详细说明。
<xsl:template>
XSL样式表是由一个或多个被称为“模板” 的规则集组成的。
每个模板都包含了与每一个指定节点相匹配的应用规则。
XSLT<xsl:template>元素
<xsl:template>元素是用于创建模板的。
Match 属性的作用是使模板和XML与元素相匹配。Match属性也可以为整个XML文档定义模版。Match属性值是一个XPath表达式。(例如:match="/" 定义整个文档)。
接下来,让我们看一下上一章中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>Title</th> <th>Artist</th> </tr> <tr> <td>.</td> <td>.</td> </tr> </table> </body> </html></xsl:template></xsl:stylesheet>
通过上面的代码,转换的结果如下:
我的CD集
Title
Artist
.
.
因为XSL样式表就是XML文档本身,所以它一般都从XML开始声明:<?xml version="1.0" encoding="ISO-8 59-1"?>。
下一个元素<xsl:stylesheet>,把这份文档定义为XSLT样式表文档(连同版本号和XSLT命名空间属性一起定义)。
<xsl:template>元素定义了一份模板。Match=”/”属性使模板和XML源文档的根目录相互联结起来。
<xsl:template>元素里面的内容定义一些HTML来对结果进行书写。
最后两行定义了模版的结束符和样式表的结束符。
查看XML文件, 查看 XSL文件, 以及最终结果
这个例子所产生的结果有点令人失望,因为没有将任何数据从XML文档中复制到结果当中。
<xsl:value-of>
<xsl:value-of>元素是用于选取一个已选中的节点值的。
<xsl:value-of>元素
<xsl:value-of>元素可以用来选取一个XML元素的值,并把它添加到转换后的输出流里:
<?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>Title</th> <th>Artist</th> </tr> <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html></xsl:template></xsl:stylesheet>
注意: 选择(select)属性值是一个XPath表达式。XPath表达式的作用,如:对文件系统进行导航,通过在前面添加斜杠 “/” 来选择子目录。
上述代码的转换结果如下:
我的CD集
Title
Artist
Empire Burlesque
Bob Dylan
通过这个例子得到的结果同样让人有点失望,因为只有一行数据从XML文件中复制到结果。
<xsl:for-each>
可以在XSLT中使用<xsl:for-each>元素来实现循环功能。
<sxl:-each>元素
XSL<xsl:for-each>元素的作用是:选择所有具有指定节点集的XML元素:
<?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>Title</th> <th>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>
注意: 选择(select)属性值是一个XPath的表达式值。XPath表达式的作用,如:文件系统的导航,而这个文件系统是通过在前端添加斜杠 “/” 来选择子目录的。
上面的转换结果如下:
我的CD集
Title
Artist
Empire Burlesque
Bob Dylan
Hide your heart
Bonnie Tyler
XML 文件, XSL 文件, 以及 最终结果
过滤结果
我们也可以在<xsl:for-each>元素中添加一个选择属性来过滤XML文件中的结果。
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
合法的过滤操作是:
=(等于)
!= (不等于)
< 小于
> 大于
让我们来看一下调整后的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>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd[artist='Bob Dylan']"> <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>
上面的转换结果如下:
我的CD集
Title
Artist
Empire Burlesque
Bob Dylan
<xsl:sort>
<xsl:sort>元素用于对结果进行分类。
在哪儿放置分类信息
如果要对结果进行分类,可以在XSL文件里的<xsl:for-each>元素中添加一个<xsl:sort>元素:
<?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>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <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>
注意: 选择(select)属性需要指明对哪些XML元素进行分类。
上述代码的转换结果如下:
我的CD集
Title
Artist
Romanza
Andrea Bocelli
One night only
Bee Gees
Empire Burlesque
Bob Dylan
Hide your heart
Bonnie Tyler
The very best of
Cat Stevens
Greatest Hits
Dolly Parton
<xsl:if>
<xsl:if>元素的作用是:根据XML文件的内容设置一个条件语句。
<xsl:if>元素
如果你需要对XML文件的内容设置一个条件语句,那需要向XSL文档中添加一个<xsl:if>元素。
语法
<xsl:if test="expression">......some output if the expression is true......</xsl:if>
<xsl:if>元素应该放在哪
如果要添加一个条件语句,那么就必须在XSL文件里的<xsl:for-each>中添加一个<xsl:if>元素:
<?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>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:if test="price > 10"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:if> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet>
注意: 所要求的(test)属性值包括了所计算的表达式的值。
上述代码仅输出价格高于10的CD所对应的标题和艺术家。
上述代码的转换结果如下:
我的CD集
Title
Artist
Empire Burlesque
Bob Dylan
Still got the blues
Gary Moore
One night only
Bee Gees
Romanza
Andrea Bocelli
Black Angel
Savage Rose
1999 Grammy Nominees
Many
<xsl:choose>
<xsl:choose>元素通过<xsl:when>和<xsl:otherwise>一起配合使用来表达多种条件语句。
<xsl:choose>元素
语法
<xsl:choose><xsl:when test="expression"> ... some output ...</xsl:when><xsl:otherwise> ... some output ....</xsl:otherwise></xsl:choose>
如何提出选择条件
如果你希望向XML文件中插入一个多重条件语句,可以在XSL文件中添加<xsl:choose>,<xsl:when>以及<xsl:otherwise>元素:
<?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>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html> </xsl:template></xsl:stylesheet>
当CD的价格高于10 时,上述代码会将红色背景色添加到对应的”Artist”专栏。
转换结果如下:
我的CD集
Title
Artist
Empire Burlesque
Bob Dylan
Hide your heart
Bonnie Tyler
Greatest Hits
Dolly Parton
Still got the blues
Gary Moore
Eros
Eros Ramazzotti
其它案例
这里举出另外一个案例,其中包含2个<xsl:when>元素:
<?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>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price > 10"> <td bgcolor="#ff00ff"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:when test="price < 9"> <td bgcolor="#cccccc"> <xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise> <td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose> </tr> </xsl:for-each> </table> </body> </html></xsl:template></xsl:stylesheet>
当CD的价格高于10时,上面的这些代码会将红色背景色添加到对应的“Artist”专栏;当CD的价格大于9小于等于10时,会将灰色背景色添加到对应的“Artist”专栏。
转换结果如下:
我的CD集
Title
Artist
Empire Burlesque
Bob Dylan
Hide your heart
Bonnie Tyler
Greatest Hits
Dolly Parton
Still got the blues
Gary Moore
Eros
Eros Ramazzotti
<xsl:apply-templates>
<xsl:apply-templates>color: #494949; line-heigh
分享到:
评论

相关推荐

    xsl简易教程,让你轻松入门

    一篇非常不错的xsl简易教程,希望对您有所帮助

    XSL-FO 教程

    在我们的 XSL-FO 教程中,您将了解到什么是 XSL-FO。 您将学习如何使用 XSL-FO 对用于输出的XML文档进行格式化。

    XSL 中文教程大全

    自己收集的XSL中文教程大全, 比较多, 比较适合初学者

    xsl教程

    很不错的xsl;很不错的xsl;很不错的xsl

    XSL简明教程.chm

    XSL简明教程.chm XSL简明教程.chm XSL简明教程.chm XSL简明教程.chm

    XSL学习资料

    包含xslt的标准API学习手册以及XSL的简易教程,可以帮助XSL初学者快速入门。

    XSL基础教程 从 XSLT 样式表调用 JavaScript

    XSL基础教程 从XSLT样式表调用 JavaScript XSLT 是什么类型的语言 XML认证教程,第 4 部分 XSL样式单

    T17.4_XSL java 经典教程 经典教材

    T17.4_XSL java 经典教程 经典教材

    网页XSL基础教程,支持XML和XSL

    一个跨浏览器的解决方法 ...在服务器上进行XSL转换正在成为未来Internet信息服务器工作任务的一个主要部 分,同时我们将看到专用浏览器市场的发展,如:Braille、有声网络、网络打印 机、手持PC、移动电话等。

    XSL简明教程(5)

    简单的办法就是给你的for-each元素...&lt;xsl:for-each select="CATALOG/CD" order-by=" ARTIST"&gt; order-by属性带有一个" "或者"-" 的符号,用来定义索引的方式,是升序还是降序排列。符号后面的名字就是要索引的关键字。

    XSL学习教程实例+实例

    随着Internet的发展,越来越多的信息进入互联网,信息的交换、检索、保存及再利用等迫切的需求使HTML这种最常用的标记语言已越来越捉襟见肘。HTML将数据内容与表现融为一体,可修改性、数据可检索性差,而XML借鉴了...

    XML HTML CSS XSL Web编程实作教程.rar

    XML HTML CSS XSL Web编程实作教程.rar XML HTML CSS XSL Web编程实作教程.rar XML HTML CSS XSL Web编程实作教程.rar

    蛋疼的xsl教程

    高手绕行吧, 简单的学习,了解,xsl学习中……

    关于XSL - XSL教程

    关于XSL - XSL教程

    XML HTML CSS XSL Web编程实作教程

    XML HTML CSS XSL Web编程实作教程(pdg)

    xsl入门教程

    xml的xsl开发技术,详细介绍了xsl的相关内容,是word文档的,所以可以进行拷贝复制修改等等以作为自己的学习笔记,也可以自己生成pdf格式的,编程超高清的pdf了,你值得拥有

    XSL开发基础参考资料

    XSL函数大全 XSL元素大全 常用的XPATH手册 XSL知识速查

    XSL的W3School教程.rar

    XSL教程.rar,来自W3School的教程,很详细的资料

    OMML2MML.XSL

    使用java解析word文件里得数学公式时,会用到该文件.可以将公式的格式转为目标格式. Mathml (MML) ...Office在安装目录中提供了将OMML转为MathML的xsl工具:MML2OMML.XSL 注:试用前,请先打开文件并阅读第一行.

Global site tag (gtag.js) - Google Analytics