xsl样式表学习
XSL指扩展样式表语言(Extensible Stylesheet Language)
万维网联盟开始发展样式表的起因是由于对基于XML的样式表语言的需求
XSLT指XSL转换。XSLT可以将XML文档转换为其他文档,比如XHTML
XSLT参考手册
XSLT元素https://www.w3school.com.cn/xsl/xsl_w3celementref.asp
对所有来自 W3C 标准的 XSLT 元素进行了描述,以及关于浏览器支持的信息。
XSLT函数https://www.w3school.com.cn/xsl/xsl_functions.asp
XSLT包含了超过100个内置函数。这些函数可以用于字符串、数值、日期和时间比较、节点和QName(QName是一个XML中)的概念,表示一个有命名空间的节点的名称。处理、序列处理、逻辑值等等。
内容目录
XSL语言
详细解释XSL的子语言:XSLT、XPath、XSL-FO。
起始于 XSL
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。
万维网联盟 (W3C) 开始发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。
CSS = HTML 样式表
HTML 使用预先定义的标签,标签的意义很容易被理解。
HTML 元素中的
元素定义表格 - 并且浏览器清楚如何显示它。向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。
XSL = XML 样式表
XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。
XSL 可描述如何来显示 XML 文档!
XSL - 不仅仅是样式表语言
XSL 包括三部分:
XSLT
一种用于转换 XML 文档的语言。
XPath
一种用于在 XML 文档中导航的语言。
XSL-FO
一种用于格式化 XML 文档的语言。
XPath 是一种用于在 XML 文档中进行导航的语言。
学习之前,您需要具备的基础知识:
在您继续学习之前,需要对以下知识有基本的了解:
XSLT简介
XSLT 的简介。包括其概念和作用。
XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。
XPath 是一种用于在 XML 文档中进行导航的语言。
HTML / XHTML
XML / XML 命名空间
XPath
如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。
什么是XSLT
什么是 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如何工作
在转换过程中,XSLT使用XPath来定义源文档中可匹配一个或多个预定义模板的部分。一旦匹配被找到XSLT就会把源文档的匹配部分转换为结果文档。
XSLT是W3C标准
XSLT 在 1999 年 11 月 16 日被确立为 W3C 标准。
如需更多有关 W3C 的 XSLT 活动的信息,请访问我们的 W3C 教程。
XSLT 浏览器
支持XSLT的浏览器总论
几乎所有主要的浏览器均支持 XML 和 XSLT。
感觉这些都是古早浏览器时代的浏览器
新的应该也支持吧
XSLT 转换
如何使用 XSLT 将 XML 文档转换为 XHTML 文档。
实例研究:如何使用 XSLT 将 XML 转换为 XHTML。
正确的样式表声明
把文档声明为 XSL 样式表的根元素是 xsl:stylesheet 或 xsl:transform。
注释: 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>
在 Internet Explorer 和 Firefox 中查看 XML 文件:
打开 XML 文件(通常通过点击某个链接) - XML 文档会以颜色化的代码方式来显示根元素及子元素。点击元素左侧的加号或减号可展开或收缩元素的结构。如需查看原始的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">Artiest</th>
<th align="left">ok</th>
<th align="left">ok</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>
我们讲一下这个table标记对里的东西:
Title | Artist |
---|---|
我们会在下一节对本例的细节进行解释。
XSLT xsl:template 元素
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="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>
代码解释:
由于 XSL 样式表本身也是一个 XML 文档,因此它总是由 XML 声明起始:
下一个元素,xsl:stylesheet,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。
xsl:template 元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系。
xsl:template 元素内部的内容定义了写到输出结果的 HTML 代码。
最后两行定义了模板的结尾,及样式表的结尾。
XSLT xsl:value-of 元素
xsl:value-of 元素可提取选定节点的值。
xsl:value-of用于提取某个选定节点的值,并把值添加到转换的输出流中
<td><xsl:value-of select="catalog/cd/title"/></td>
select 属性的值是一个XPath表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
XSLT xsl:for-each 元素
xsl:for-each 元素允许您在 XSL 中进行循环。
xsl:for-each 元素可用于选取指定的节点集中的每个xml元素
<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>
结果过滤
通过在 xsl:for-each 元素中添加一个选择属性的判别式,我们也可以过滤从 XML 文件输出的结果。<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
合法的过滤运算符:
1,=(等于)
2,!=(不等于)
3,<(xiaoyu)
4, >(dayu)
<?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>
XSLT xsl:sort 元素
xsl:sort 元素用于对输出进行排序。
xsl:sort 元素用于对结果进行排序。
在何处放置排序信息
如需对结果进行排序,只要简单地在 XSL 文件中的 xsl:for-each 元素内部添加一个 xsl:sort 元素:
<xsl:sort select="artist"/>
用法:
<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>
XSLT xsl:if 元素
xsl:if 元素用于针对 XML 文件的内容放置一个条件测试。
如需放置针对 XML 文件内容的条件测试,请向 XSL 文档添加 xsl:if 元素。
用法:
<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>
注释:必选的 test 属性的值包含了需要求值的表达式。
上面的代码仅仅会输出价格高于 10 的 CD 的 title 和 artist 元素。
上面的转换结果类似这样:
语法
XSLT xsl:choose 元素
xsl:choose 元素被用来与 xsl:when 和 xsl:otherwise 配合使用,来表达多重的条件检验。
XSLT xsl:apply-templates 元素
xsl:apply-templates 元素可把模板规则应用到当前节点或者当前元素的子节点。
客户端的 XSL
如何在客户端将 XML 文档转换为 XHTML 文档。
服务器端的XSL
如何在服务器端将 XML 文档转换为 XHTML 文档。
本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/17786344.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?