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的声明和引用的主要内容,如果未能解决你的问题,请参考以下文章

XSLT 未声明的实体。现在给出编译错误,但它曾经工作

XSLT:无法将操作数转换为“结果树片段”

将 XSLT 转换的 XML 片段写入 XMLStreamWriter

如何使用相对路径在 XSLT 中引用 CSS

Thymeleaf引用片段传入参数

XSLT 与 Java集成常见技术关键点