XSLT的声明和引用
Posted 我永远信仰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XSLT的声明和引用相关的知识,希望对你有一定的参考价值。
3.XSTL
3.1 什么是XSL
-
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。
-
发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。
-
CSS = html 样式表
HTML 使用预先定义的标签,标签的意义很容易被理解。
HTML 元素中的
元素定义表格 - 并且浏览器清楚如何显示它。向 HTML 元素添加样式是很容易的。通过 CSS,很容易告知浏览器用特定的字体或颜色显示一个元素。
-
XSL = XML 样式表
XML 不使用预先定义的标签(我们可以使用任何喜欢的标签名),并且这些标签的意义并不都那么容易被理解。
元素意味着一个 HTML 表格,一件家具,或是别的什么东西 - 浏览器不清楚如何显示它。XSL 可描述如何来显示 XML 文档!
-
XSL - 不仅仅是样式表语言
XSL 包括三部分:
-
XSLT
一种用于转换 XML 文档的语言。
-
XPath
一种用于在 XML 文档中导航的语言。
-
XSL-FO
一种用于格式化 XML 文档的语言。
-
3.2 什么是XSLT?
- XSLT 指 XSL 转换(XSL Transformations)。
- XSLT 是 XSL 中最重要的部分。
- 使用 XSLT 将 XML 文档转换为其他文档,比如 XHTML。
- XSLT 使用 XPath 在 XML 文档中进行导航。
- XPath 是一个 W3C 标准。
3.3 XSL声明
- 把文档声明为 XSL 样式表的根元素是
<xsl:stylesheet>
或<xsl:transform>
。
这两种声明方式是完全同义的,均可被使用。
3.3.1 创建 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>
代码解释:
- 如需访问 XSLT 的元素、属性以及特性,我们必须在文档顶端声明 XSLT 命名空间。
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
这段代码指向了官方的 W3C XSLT 命名空间,使用此命名空间,就必须包含属性 version=“1.0”。
- 正确的声明 XSL 样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
...
</xsl:stylesheet>
<xsl:template>
元素用于构建模板。
<xsl:template match="/">
...
...
</xsl:template>
match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(match="/" 定义整个文档)。
<xsl:for-each>
元素- 在XSTL中循环
- 用于选取指定的节点集中的每个 XML 元素。
select
属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录。
<xsl:for-each select="catalog/cd">
...
...
</xsl:for-each>
这段代码表示,循环选取catalog的子元素的所有cd元素
<xsl:value-of>
由于提取某个选定节点的值,并把值添加到转换的输出流中
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
这里表示将 元素title 和artist的值提取,对应table的头部栏
3.3.2 把 XSL 样式表链接到 XML 文档
创建一个 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>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
</catalog>
代码解释
- 向 XML 文档(“cdcatalog.xml”)添加 XSL 样式表引用:
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
运行结果:
未引用XSTL:
引用了XSTL:
以上是关于XSLT的声明和引用的主要内容,如果未能解决你的问题,请参考以下文章