`
747017186
  • 浏览: 317324 次
社区版块
存档分类
最新评论

xslt的简介

    博客分类:
  • xml
 
阅读更多

XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。

XSLT 指 XSL 转换。在此教程中,你将学习如何使用 XSLT 将 XML 文档转换为其他文档,比如 XHTML。

 

可以通过某种方式把已经存在的xml转化为对应的可扩展的语言。但是我们在xslt里面选择被转化的xml的时候,需要用到选择器语法选择,这个就是XPath语法进行选择。

 

XSLT - 转换

实例研究:如何使用 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">
这是个标准,所有的xslt都必须被引用

或者:

<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源文件(不带有加号和减号),请在浏览器菜单中选择“查看页面源代码”。

在 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="/">//检索xml从哪个元素开始,match里面是XPath表达式,这里的意思是根元素
  <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">//在根元素下查找标签是catalog下的cd元素有多个,这里直接循环,找到每一个元素
    <tr>
      <td><xsl:value-of select="title"/></td>//直接查找cd下面的元素,value——of是输出title的值
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

查看 "cdcatalog.xsl"

把 XSL 样式表链接到 XML 文档

向 XML 文档("cdcatalog.xml")添加 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。

查看结果

我们会在下一节对上面的例子中的细节进行解释。

 

--------------------------------------------------------------------------------------------------------------------------------

大家还要注意一个元素:<xsl:apply-templates>。这个元素是匹配已经存在的一个模板元素。下面我们看一个例子:

定义和用法

<xsl:apply-templates> 元素可向当前元素或当前元素的子元素应用模板。

如果我们向 <xsl:apply-templates> 元素添加 select 属性,那么它仅会处理匹配该属性的值的子元素。我们可使用 select 属性来规定处理子介点的顺序。

语法

<xsl:apply-templates select="expression" mode="name">
  <!-- Content:(xsl:sort|xsl:with-param)* -->
</xsl:apply-templates>

属性

属性 值 描述
select 表达式 可选。规定要处理的节点。星号选取整个节点集。如果省略该属性,则将选取当前节点的所有子节点。
mode 名称 可选。如果存在为相同元素定义的多个处理方法,那么用 mode 可以区分它们。

实例

例子 1

用 h1 元素包围文档中每个 title 元素:

<?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="title">
  <h1><xsl:apply-templates/></h1>//相当于在title外面加了一个<h1>标签
</xsl:template>

</xsl:stylesheet>

例子 2

用 h1 元素包围文档中所有属于 message 的子元素的 title 元素:

<?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="message">
  <h1><xsl:apply-templates select="title"/></h1>
</xsl:template>

</xsl:stylesheet>

例子 3

用 h1 元素包围文档中 mode 属性设置为 "big" 的 message 所有子节点:

<?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="message">
  <h1><xsl:apply-templates select="*" mode="big"/></h1>
</xsl:template>

</xsl:stylesheet>

 

分享到:
评论

相关推荐

    XSLT+CSS+JQuery+WebService实现网站

    XSLT+CSS+JQuery+WebService实现网站 分离到底!...方案简介 XML+XSLT+CSS的方案将数据、结构、表现进行了分离,而依托JQuery我们又可以轻松地将交互也从中分离出来,这样在客户端就达到了近乎完美的解耦。

    Python编程入门经典

    15.11 XSLT简介 262 15.11.1 XSLT是XML 262 15.11.2 转换和格式语言 263 15.11.3 函数式、模板驱动 263 15.12 lxml简介 263 15.13 元素类 263 15.14 使用lxml解析 266 15.15 本章小结 267 15.16 习题 267 第16章 ...

    XSLT与XPath入门转换XML文档与数据

    简介: XML内容管理应用程序的增长刺激了对XSLT和Xpath技能的要求.本入门教程提供了XSLT处理模型的基础,为开发者提供了重要的基本功. XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。  ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    4.24 jaxp中的xslt api 175 4.24.1 转换器工厂 175 4.24.2 transformer和templates 176 4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2...

    xslt与xml简介,可以清晰的了解其语法与功能

    有实例,有代码,讲解清晰易懂。可以很快的接受,从入门到应用,实用性很强。介绍XML的基础知识,能够很快的熟悉其功能。

    将XSLT作为HTML的样式表的使用方法示例

    简介  当听到样式表这个词时,您可能会想到 CSS 样式表。XSLT 样式表通常用于 XML 转换,比如在 Web 服务之间映射数据。因为 XSLT 非常适合此用途,所以创建了顶层元素 &lt;stylesheet&gt; 的 &lt;xsl&gt; 别名,虽然这很少使用...

    Dom4j_使用简介

    Dom4j_使用简介DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java ...

    WAP教程(1):WAP 简介-XML/XSLT

    WAP 协议被设计用来在无线客户端(比如移动电话)上展示因特网内容。 WAP 协议被设计用来在无线客户端(比如移动电话)上展示因特网内容。您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了

    DOM4J使用简介(很实用)

    Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP. Dom4j是一个易用...

    JavaWeb开发详解

    资源名称:JavaWeb开发详解内容简介:《Java Web开发详解:XML XSLT Servlet JSP深入剖析与实例应用》共分4部分,从XML、Servlet、JSP和应用的角度向读者展示了Java Web开发中各种技术的应用,循序渐进地引导读者快速...

    XSL-FO 教程

    XSL-FO 简介 XSL-FO 的简介。包括其概念和作用。 XSL-FO 文档 本章将解 XSL-FO 文档的结构。 XSL-FO 区域 本章讲解 XSL-FO 的区域模型(area model)。 XSL-FO 输出 本章讲解 XSL-FO 文档的输出元素(Output ...

    Oracle XSQL 技术

    内容简介 XSQL是目前最流行的一种可扩展的结构化查询语言。本书从一个全新的角度全面展示了如何利用XSQL结合SQL、Oracle Text、Oracle RDBMS、Java、XML和XSLT等技术的强大功能发布动态Web内容。主要内容包括:讲解...

    Oracle XSQL 技术.rar

    内容简介 XSQL是目前最流行的一种可扩展的结构化查询语言。本书从一个全新的角度全面展示了如何利用XSQL结合SQL、Oracle Text、Oracle RDBMS、Java、XML和XSLT等技术的强大功能发布动态Web内容。主要内容包括:讲解...

    ajax原理简介(包含例子说明)

    AJAX全称为“Asynchronous...使用 XML 和 XSLT 进行数据交换及相关操作; 使用 XMLHttpRequest 进行异步数据查询、检索; 使用 JavaScript 将所有的东西绑定在一起。英文参见Ajax的提出者Jesse James Garrett的原文。

    Cocoon 2 简介

    执行简单和多级 XSLT 转换 将参数动态传递到 XSLT 变换 生成各种各样的输出格式,包括 XML、HTML、PNG、JPEG、SVG 和 PDF 这大大增加了使用 XML 和 XSLT 中现有技巧进行工作的功能。 Cocoon 让您能以最少的...

    Python程序设计:使用lxml库解析页面.pptx

    它支持 XML Path Language (XPath) 和 Extensible Stylesheet Language Transformation (XSLT),并且实现了常见的 ElementTree API。 关于更多介绍和使用请参看官方文档: https://lxml.de/ lxml库 节点语法 lxml库 ...

    dom4j使用简介

    Dom4j 是一个易用的、开源的库,用于 XML,XPath 和 XSLT。它应用于 Java 平 台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP

Global site tag (gtag.js) - Google Analytics