XSLT教程

更新时间:2023-07-26 06:17:38 阅读: 评论:0

1  XSLT 教程
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。
万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。
XSLT 指 XSL 转换。在此教程中,你将学习如何使用 XSLT 将 XML 文档转换为其他文档,比如 XHTML。
开始学习 XSLT !
XSLT 参考手册
XSLT 元素
对所有来自 W3C 标准的 XSLT 元素进行了描述,以及关于浏览器支持的信息。
XSLT 函数
XSLT 包含了超过 100 个内置函数。 这些函数可以用于字符串、数值、日期和时间比较、节点和 QName 处理, 序列处理, 逻辑值等等。 内容目录
XSL 语言
详细解释 XSL 的子语言: XSLT、XPath 和 XSL-FO。
XSLT 简介
XSLT 的简介。包括其概念和作用。
XSLT 浏览器
支持 XSLT 的浏览器总论。
XSLT 转换
如何使用 XSLT 将 XML 文档转换为 XHTML 文档。
XSLT 模板
<xsl:template> 元素包含了当指定的节点被匹配时所能应用的规则.
XSLT <xsl:value-of> 元素
<xsl:value-of> 元素可提取选定节点的值。
XSLT <xsl:for-each> 元素
<xsl:for-each> 元素允许您在 XSL 中进行循环。
XSLT <xsl:sort> 元素
<xsl:sort> 元素用于对输出进行排序。
XSLT <xsl:if> 元素
<xsl:if> 元素用于针对 XML 文件的内容放置一个条件测试。
XSLT <xsl:choo> 元素
<xsl:choo> 元素被用来与 <xsl:when> 和 <xsl:otherwi> 配合使用,来表达多重的条件检验。
XSLT <xsl:apply-templates> 元素
<xsl:apply-templates> 元素可把模板规则应用到当前节点或者当前元素的子节点。
客户端的 XSL
如何在客户端将 XML 文档转换为 XHTML 文档。
服务器端的X SL
如何在服务器端将 XML 文档转换为 XHTML 文档。
XSL Editing XML
存储在 XML 文件中的数据可以通过因特网浏览器进行编辑。本章将讲解如何打开、编辑、保存一个存储于服务器的 XML 文件。
XSL 编辑器
当编辑 XSL 文档时,为什么应该使用 XML 编辑器。
XSLT 总结
本节是对您在本教程所学内容的总结,并为您推荐了下一步应该学习的内容。
XSLT 参考手册
XSLT 元素
对所有来自 W3C 标准的 XSLT 元素进行了描述,以及关于浏览器支持的信息。
XSLT 函数
XSLT 拥有超过 100 个内置的函数。这些函数可以用于字符串、数值、日期和时间比较、节点和QName处理, 序列处理, 逻辑值等等。
2  XSL 语言
它起始于 XSL,结束于 XSLT、XPath 以及 XSL-FO。
莲花漏
起始于 XSL
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。
万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。
CSS = HTML 样式表
HTML 使用预先定义的标签,标签的意义很容易被理解。
HTML 元素中的 <table> 元素定义表格 - 并且浏览器清楚如何显示它。
向 HTML 元素
添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。
XSL = XML 样式表
XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。
<table> 元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。
XSL 可描述如何来显示 XML 文档!
XSL - 不仅仅是样式表语言
XSL 包括三部分:
XSLT
一种用于转换 XML 文档的语言。
XPath
一种用于在 XML 文档中导航的语言。
XSL-FO
一种用于格式化 XML 文档的语言。 本教程的主要内容是 XSLT
本教程的其余部分是 XSLT - 用来转换 XML 文档的语言。
你也可以学习我们的《XPath 教程》和《XSL-FO 教程》。
3  XSLT 简介
XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。
XPath 是一种用于在 XML 文档中进行导航的语言。
学习之前,您需要具备的基础知识:
在您继续学习之前,需要对以下知识有基本的了解:
HTML / XHTML
XML / XML 命名空间
XPath
如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。
什么是 XSLT?
XSLT 指 XSL 转换(XSL Transformations)。
XSLT 是 XSL 中最重要的部分。
XSLT 可将一种 XML 文档转换为另外一种 XML 文档。
XSLT 使用 XPath 在 XML 文档中进行导航。
XPath 是一个 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 是 W3C 标准
XSLT 在 1999 年 11 月 16 日被确立为 W3C 标准。
如需更多有关 W3C 的 XSLT 活动的信息,请访问我们的 W3C 教程。
4  XSLT 浏览器
几乎所有主要的浏览器均支持 XML 和 XSLT。
Mozilla Firefox
从 1.0.2 版本开始,Firefox 就已开始支持 XML 和 XSLT(以及 CSS)。
Mozilla
Mozilla 含有用于 XML 解析的 Expat,并支持 XML + CSS。Mozilla 同样支持
命名空间。
Mozilla 可执行 XSLT。
Netscape
从版本 8 开始,Netscape 就开始使用 Mozilla 引擎,所以它对 XML / XSLT 的支持与Mozilla是相同的。
Opera
从版本 9 开始,Opera 已开始支持 XML 和 XSLT(以及 CSS)。版本 8 仅支持 XML + CSS。
Internet Explorer
从版本 6 开始,Internet Explorer 已开始 XML、命名空间、CSS、XSLT 以及 XPath。
版本 5 不兼容官方的 W3C XSL 标准。
5  XSLT - 转换
实例研究:如何使用 XSLT 将 XML 转换为 XHTML。
我们会在下一节对本例的细节进行解释。
正确的样式表声明
把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。
注释: <xsl:stylesheet> 和 <xsl:transform> 是完全同义的,均可被使用!
根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是:
<xsl:stylesheet version="1.0" xmlns:xsl="www.w3/1999/XSL/Transform">或者:
<xsl:transform version="1.0" xmlns:xsl="www.w3/1999/XSL/Transform">如需访问 XSLT 的元素、属性以及特性,我们必须在文档顶端声明 XSLT 命名空间。
xmlns:xsl="www.w3/1999/XSL/Transform" 指向了官方的 W3C XSLT 命名空间。如果您使用此命名空间,就必须包含属性 version="1.0"。
从一个原始的 XML 文档开始
我们现在要把下面这个 XML 文档("l")转换为 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>在 Internet Explorer 和 Firefox 中查看 XML 文件:
打开 XML 文件(通常通过点击某个链接) - XML 文档会以颜色化的代码方式来显示根元素及子元素。点击元素左侧的加号或减号可展开或收缩元素的结构。如需查看原始的XML源文件(不带有加号和减号),请在浏览器菜单中选择“查看页面源代码”。
在 Netscape 6 中查看 XML 文件:
打开 XML 文件,然后在 XML 文件中右击,并选择“查看页面源代码”。XML文档会以颜色化的代码方式来显示根元素及子元素。
在 Opera 7 中查看 XML 文件:
打开 XML 文件,然后在XML文件中右击,选择“框架”/“查看源代码”。XML文档将显示为纯文本。
查看"l"。
创建 XSL 样式表
然后创建一个带有转换模板的 XSL 样式表("cdcatalog.xsl"):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="www.w3/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 lect="catalog/cd">
<tr>
<td><xsl:value-of lect="title"/></td>
<td><xsl:value-of lect="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>查看 "cdcatalog.xsl"
把 XSL 样式表链接到 XML 文档
向 XML 文档("l")添加 XSL 样式表引用:
<?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。
查看结果。
我们会在下一节对上面的例子中的细节进行解释。
6  XSLT <xsl:template> 元素
XSL 样式表由一个或多套被称为模板(template)的规则组成。
每个模板含有当某个指定的节点被匹配时所应用的规则。
<xsl:template> 元素
<xsl:template> 元素用于构建模板。
match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。
好了,让我们看一下上一节中的 XSL 文件的简化版本:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="www.w3/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>代码解释:
由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:
<?xml version="1.0" encoding="ISO-8859-1"?>下一个元素,<xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。
<xsl:template> 元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系。
<xsl:template> 元素内部的内容定义了写到输出结果的 HTML 代码。
最后两行定义了模板的结尾,及样式表的结尾。
以上转换的结果类似这样:
查看XML文件,查看 XSL 文件,查看结果
此例的结果有一点小缺陷,因为数据没有从 XML 文档被复制到输出。
在下一节,您将学习到如何使用 <xsl:value-of> 元素从 XML 元素选取值。
7  XSLT <xsl:template> 元素
XSL 样式表由一个或多套被称为模板(template)的规则组成。
每个模板含有当某个指定的节点被匹配时所应用的规则。
番茄种植
<xsl:template> 元素
<xsl:template> 元素用于构建模板。
match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文
档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。
好了,让我们看一下上一节中的 XSL 文件的简化版本:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="www.w3/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>代码解释:
由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:
<?xml version="1.0" encoding="ISO-8859-1"?>下一个元素,<xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。
<xsl:template> 元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系。
<xsl:template> 元素内部的内容定义了写到输出结果的 HTML 代码。
最后两行定义了模板的结尾,及样式表的结尾。
以上转换的结果类似这样:
查看XML文件,查看 XSL 文件,查看结果
此例的结果有一点小缺陷,因为数据没有从 XML 文档被复制到输出。
在下一节,您将学习到如何使用 <xsl:value-of> 元素从 XML 元素选取值。
8  XSLT <xsl:for-each> 元素
<xsl:for-each> 元素允许您在 XSLT 中进行循环。
<xsl:for-each> 元素
<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="www.w3/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 lect="catalog/cd">
<tr>
<td><xsl:value-of lect="title"/></td>
<td><xsl:value-of lect="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>注释:lect 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
上面的转换结果类似这样:
查看此 XML 文件,查看此 XSL 文件,并查看结果。
结果过滤
通过在 <xsl:for-each> 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。
<xsl:for-each lect="catalog/cd[artist='Bob Dylan']">合法的过滤运算符:
=  (等于)
!= (不等于)
< (小于)
> (大于)
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="www.w3/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 lect="catalog/cd[artist='Bob Dylan']">
<tr>
<td><xsl:value-of lect="title"/></td>
<td><xsl:value-of lect="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>上面的转换结果类似这样:
查看此 XML 文件,查看此 XSL 文件,并查看结果。
9  XSLT <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="www.w3/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 lect="catalog/cd">
<xsl:sort lect="artist"/>
<tr>
焖猪肉<td><xsl:value-of lect="title"/></td>
<td><xsl:value-of lect="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>注释:lect 属性指示需要排序的 XML 元素。
上面的转换结果类似这样:
查看此 XML 文件,查看此 XSL 文件,并查看结果。
10  XSLT <xsl:if> 元素
<xsl:if> 元素用于放置针对 XML 文件内容的条件测试。
<xsl:if> 元素
如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 <xsl:if> 元素。
零花钱语法
<xsl:if test="expression">
...
...如果条件成立则输出...
...
</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="www.w3/1999/XSL/Transform">
<xsl:template match="/">
were原形
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each lect="catalog/cd">
<xsl:if test="price > 10">
<tr>
<td><xsl:value-of lect="title"/></td>
<td><xsl:value-of lect="artist"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>注释:必选的 test 属性的值包含了需要求值的表达式。
上面的代码仅仅会输出价格高于 10 的 CD 的 title 和 artist 元素。
上面的转换结果类似这样:
查看此 XML 文件,查看此 XSL 文件,查看结果。
11  XSLT <xsl:choo> 元素
XSLT <xsl:choo> 元素用于结合 <xsl:when> 和 <xsl:otherwi> 来表达多重条件测

本文发布于:2023-07-26 06:17:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1097035.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:元素   文档   文件   结果   查看   模板
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图