XML学习笔记——XSL

来源:互联网 发布:unicornviewer mac 编辑:程序博客网 时间:2024/05/17 22:49

XSL

.XSL文件

说明

经常看到.xsl文件,那么什么是xsl呢?即可扩展样式单语言(extensible stylesheet language)。它是由W3C制定的。说到样式语言,我们想起CSS,类似与CSS,XSL是XML的专属样式语言。

xsl与css的不同

css是一种静态的样式描述格式,其本身不遵从XML的语法规范。另外,css还有很多局限。而xsl不同,他是通过XML进行定义的,遵从XML的语法规则,是XML的一种具体应用。
简而言之,XSL本身也是一个XML文档,系统可以使用同一个XML解释器对XML文档极其相关的XSL文档进行解释处理。

组成

XSL实际上包含三种语言。

  • XSLT是一种转换XML的语言,即将XML文档转换城其他类型文档或其他XML文档的语言
  • XPATH是一种定义XML部分或模式的语言,即对XML文档的部分进行寻址的语言
  • XSL格式化对象是一种定义XML显示方式的语言,即将一个XSL转换结果变成适合读者或听众使用的输出格式的过程

这三种语言构成XSL的两大部分。

  • 第一部分描述了如何将一个XML文档进行转换,转换为可浏览或可输出的格式
  • 第二部分则定义了格式化对象。

原理:在输出的时候,首先将XML文档根据给定的XSL转换为可以显示的结构,这个过程成为转换。最后再按照FO解释,产生一个可以在屏幕上、纸质介质上、语音设备或者其他媒体中可以输出的结果,这个过程称为格式化。

使用XSL显示XML

XML的树状结构

XML文档是以根元素为根节点的一个树状结构。所谓树状结构,就是由相互连接的节点组成,这些节点实际上是XML文档中元素及其内容。在树状结构中,根节点与子节点相连接,而子节点又有他们自己的子节点,树状结构最重要的性质是每个节点与其子节点也构成一个树状结构名如此一来,每个树状结构都可以看作是由一些晓得树状结构按照层次结构组成。

XSLT

XSLT是XSL中最重要的部分,其主要功能是转换。它将一个没有形式表现的XML内容文档作为一个源树,将其转换为一个有样式信息的结果树。在XSLT中定义了与XML文档中各个逻辑成分相匹配的模版,以及匹配转换方式。

XSLT基本思想

通过定义转换模版,将XML源文档转换为带样式信息的可浏览文档。最终的可浏览文档可以是HTML格式、FO格式或者其他面向显示方式藐视的XML格式。

XSLT名称空间

在很多XSL的开头我们常常看到这样的语句

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

为了解释这个东西,我们寻根到这个网站http://www.w3.org/1999/XSL/Transform
里面有一句话:

The namespace http://www.w3.org/1999/XSL/Transform is referred to as “the XSLT namespace”. The prefix xsl is conventionally used to refer to this namespace (and is so used both within this document and within the XSLT specification), but it has no special status: any prefix may be used.

大概的意思是http://www.w3.org/1999/XSL/Transform这个名称空间代表XSLT的名称空间(namespace),所用的前缀(prefix)是xsl,通常使用xsl这个前缀来引用xslt的名称空间,比如:

  • xsl:stylesheet 就代表引用了xslt的名称空间,并且使用了当中的stylesheet根元素。

后半句的意思是xsl这个前缀不是特定的,可以使用其他任何前缀。

XSLT元素

这里引用http://www.w3.org/1999/XSL/Transform名称空间里面的定义

The namespace name http://www.w3.org/1999/XSL/Transform is used primarily to identify elements which serve as declarations or instructions in the XSLT language. The full list of element names used in XSLT 3.0 is:

xsl:accept xsl:accumulator xsl:accumulator-rule xsl:analyze-string xsl:apply-imports xsl:apply-templates xsl:assert xsl:attribute xsl:attribute-set xsl:break xsl:call-template xsl:catch xsl:character-map xsl:choose xsl:comment xsl:context-item xsl:copy xsl:copy-of xsl:decimal-format xsl:document xsl:element xsl:evaluate xsl:expose xsl:fallback xsl:for-each xsl:for-each-group xsl:fork xsl:function xsl:global-context-item xsl:if xsl:import xsl:import-schema xsl:include xsl:iterate xsl:key xsl:map xsl:map-entry xsl:matching-substring xsl:merge xsl:merge-action xsl:merge-key xsl:merge-source xsl:message xsl:mode xsl:namespace xsl:namespace-alias xsl:next-iteration xsl:next-match xsl:non-matching-substring xsl:number xsl:on-completion xsl:on-empty xsl:on-non-empty xsl:otherwise xsl:output xsl:output-character xsl:override xsl:package xsl:param xsl:perform-sort xsl:preserve-space xsl:processing-instruction xsl:result-document xsl:sequence xsl:sort xsl:source-document xsl:strip-space xsl:stylesheet xsl:template xsl:text xsl:transform xsl:try xsl:use-package xsl:value-of xsl:variable xsl:when xsl:where-populated xsl:with-param

XSL语法

根元素

<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/WSL/Transform"></xsl:stylesheet>

该元素的作用是声明XSLT的开始。两个常用属性

  • version 表示XSLT的版本序号
  • xmlns表明XSLT所使用的命名空间

模版元素

一个XSL文档主要是由一系列模版规则构成,一条模版规则有一个模式,该模式指定了它能够作用的树状结构。当模式匹配时就会按照模版样式输出。模式匹配是指XSL处理器在扫描XML文档的时候,回一次遍历该文档树状结构中国的每一棵子树,在这个过程中,处理器试图找到与模版规则中的模式相符合的子树,如果找到,则将模版规则应用到这棵子树。

模版规则,即一个xsl:template元素,该元素定义了将原文档转换到结果树所需要的一系列规则。其中有一个match属性,用于指示一种模式,可以找到应用该规则的节点。

实例:

<xsl:template match="employee">    <xsl:apply-templates select="name"/></xsl:template>

< xsl:template match=”employee”>这个模板匹配employee节点,告诉处理器处理employee节点的所有子节点。
select=”name”,select属性告诉处理器只处理employee节点下的name子节点

在XSL中套用模版

使用以下语句

<xsl:apply-templates select="xml_element_name"/>

当要选择的是属性里的数据时,使用

<xsl:apply-templates select="@xml_atrribute_bane"/>

xsl:apply-templates元素的作用是告诉XSL处理器,如果有子元素,则要对子元素进行解析,即对指定的XML文档子元素应用相应的模版规则,而指定子元素则由该元素的select属性值表示。

选取XML文档中的数据

在使用XSL对XML文档进行转换时,首先需要获取XML元素或属性的内容,这通过内容元素的xsl:value-of来实现,同时用该元素所带有的select属性来指定XML元素名称,由此构成的XSL语句即可完成对XML文档转换时要选取数据的任务。

使用XSL显示XML

在XML文档中应该添加如下声明才能显示XSL的模版效果

<?xml-stylesheet type="text/xsl" href="xsl-uri"?>

xsl-uri代表该样式表的名称与路径,如”char05.xsl”

其他

关于XSLT的细节内容,可以访问官方网站XSLT 2.0版本的教程介绍
https://www.w3.org/TR/xslt20/

附录

XML编辑器推荐:XMLSpy

1 0
原创粉丝点击