xlst

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

XSL 包括三部分:

XSLT:一种用于转换 XML 文档的语言。

XPath:一种用于在 XML 文档中导航的语言。

XSL-FO:一种用于格式化 XML 文档的语言。

             

XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。

把文档声明为 XSL 样式表的根元素是 <xsl:stylesheet> 或 <xsl:transform>。

<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">

 

<xsl:template match="/">

<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>

</xsl:template>

 

在html文档中引用<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>

 

 

match="/" 定义整个文档

<xsl:template> 元素用于构建模板。

<xsl:stylesheet>,定义此文档是一个 XSLT 样式表文档(连同版本号和 XSLT 命名空间属性)。

<xsl:value-of> 元素用于提取某个选定节点的值。如:

<xsl:value-of select="catalog/cd/title"/>

select 属性的值是一个 XPath 表达式。此表达式的工作方式类似于定位某个文件系统,在其中正斜杠可选择子目录

<xsl:for-each> 元素允许您在 XSLT 中进行循环。如:<xsl:for-each select="catalog/cd[artist='Bob Dylan']">

=  (等于)

!= (不等于)

&lt; (小于)

&gt; (大于)

 

<xsl:sort> 元素用于对结果进行排序。如:<xsl:sort select="artist"/>

<xsl:if> 元素用于放置针对 XML 文件内容的条件测试。

语法

<xsl:if test="expression">

  ...

  ...如果条件成立则输出...

  ...

</xsl:if>

 

XSLT <xsl:choose> 元素用于结合 <xsl:when> <xsl:otherwise> 来表达多重条件测试。

<xsl:choose> 元素

语法

<xsl:choose>

  <xsl:when test="expression">

    ... 输出 ...

  </xsl:when>

  <xsl:otherwise>

    ... 输出 ....

  </xsl:otherwise>

</xsl:choose>

 

<xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。

 

使用样式表必须要求浏览器支持xslt,可以通过使用 JavaScript,我们可以进行浏览器确认测试,根据浏览器和使用者的需求来使用不同的样式表

XSLT 的设计目的之一就是使一种格式到另一种格式的转换成为可能,同时支持不同类型的浏览器以及不同的用户需求。并向所有类型的浏览器返回可读的数据。

<script type="text/javascript">

 

// Load XML

var xml = new ActiveXObject("Microsoft.XMLDOM")

xml.async = false

xml.load("cdcatalog.xml")

 

// Load XSL

var xsl = new ActiveXObject("Microsoft.XMLDOM")

xsl.async = false

xsl.load("cdcatalog.xsl")

 

// Transform

document.write(xml.transformNode(xsl))

 

</script>

 

标签:

1、<xsl:apply-imports> 元素可应用来自导入样式表中的模版规则。

导入样式表中的模版规则的优先级要比主样式表中的模版规则要低。

如:<xsl:import href="standard.xsl"/>

 

<xsl:template match="message">

  <div style="border:solid blue">

  <xsl:apply-imports/>

  </div>

</xsl:template>

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

Select:可选。规定要处理的节点。星号选取整个节点集。如果省略该属性,则将选取当前节点的所有子节点。

3、<xsl:attribute> 元素用于向元素添加属性。注释:<xsl:attribute> 元素会替换名称相同的已有属性。

Name:必需。规定属性的名称。

Namespace:可选。为属性定义命名空间的 URI。

<xsl:attribute-set name="font">

  <xsl:attribute name="fname">Arial</xsl:attribute>

  <xsl:attribute name="size">14px</xsl:attribute>

  <xsl:attribute name="color">red</xsl:attribute>

</xsl:attribute-set>

 

4、xsl:attribute> 元素用于向元素添加属性。

5、<xsl:call-template> 元素可调用一个指定的模板。

Name:必需。规定被调用的模板名称。

6、<xsl:comment> 元素用于在结果树中创建注释节点。

7、<xsl:copy> 元素可创建当前节点的一个副本(拷贝)。

注释:当前节点的 Namespace 节点会被自动复制,但是当前节点的子节点和属性不会被自动复制!

use-attribute-sets: 可选。如果该节点是元素,则该属性是应用到输出节点的属性集列表,由空格分隔

8、<xsl:copy-of> 元素可创建当前节点的一个副本。注释:当前节点的 Namespace 节点、子节点以及属性都会被自动复制!

9、<xsl:decimal-format> 元素定义了当通过 format-number() 函数把数字转换为字符串时,所要使用的字符和符号。

name

name

可选。为此格式规定名称。

decimal-separator

char

可选。规定小数点字符。默认是 "."。

grouping-separator

char

可选。规定千的分隔字符。默认是 ","。

infinity

string

可选。规定用来表示无穷大的字符串。默认是 "Infinity"。

minus-sign

char

可选。规定表示负数的字符。默认是 "-"。

NaN

string

可选。规定当值不是数字时使用的字符串。默认是 "NaN"。

percent

char

可选。规定百分比符号的字符。默认是 "%"。

per-mille

char

可选。规定千分号的字符。默认是 "‰"。

zero-digit

char

可选。规定数字 0 的字符。默认是 "0"。

digit

char

可选。规定字符,该字符用于指示需要使用数字的地方。默认是 #。

pattern-separator

char.

可选。规定字符,该字符用于分隔格式模式中的正负次模式。默认是 ";"。

如:

<xsl:decimal-format name="euro" decimal-separator="," grouping-separator="."/>

 

<xsl:template match="/">

<xsl:value-of select="format-number(26825.8, '#.###,00', 'euro')"/>

</xsl:template>

 

10、<xsl:element> 元素用于在输出文档中创建元素节点。

属性

描述

name

name

必需。规定要创建的元素的名称(可以使用表达式为 name 属性赋值,这个表达式是在运行时进行计算的,比如:<xsl:element name="{$country}" />)

namespace

URI

可选。规定元素的命名空间 URI。(可以使用表达式为 namespace 属性赋值,这个表达式是在运行时进行计算的,比如:<xsl:element name="{$country}" namespace="{$someuri}"/>)

use-attribute-sets

namelist

可选。空格分隔的属性集,该属性集包含了需要向元素添加的属性。

 

11、<xsl:fallback> 元素规定了在 XSL 处理程序不支持 XSL 元素时,所执行的替代代码。

12、<xsl:import> 元素是顶层元素,用于把一个样式表中的内容倒入另一个样式表中。

注释:被导入的样式的优先级低于导出的样式表

13、<xsl:include> 元素是顶层元素(top-level element),把一个样式表中的样式表内容包含到另一个样式表中。

注释:被包含的样式表(included style sheet)拥有与包含的样式表(including style sheet)相同的优先级。

注释:该元素必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。

href

URI

必需。规定要包含的样式表的 URI。

 

14、<xsl:key> 元素是顶层元素,它可声明一个命名的键(即为 XML 文档中指定的元素分配的名称和值对)。

此键通过 key() 函数在样式表中使用,帮助您有效地在复杂的 XML 文档中访问分配的元素。。

注释:键不必是唯一的!

 

属性

描述

name

name

必需。规定键的名称。

match

pattern

必需。定义该键被应用到哪个节点。

use

expression

必需。指定要作为该键的值使用的表达式。

键值可以是下列任一值:属性、子元素或匹配元素的内容。

 

15、<xsl:message> 元素可向输出写一条消息。该元素主要用于报告错误。

该元素能够包含几乎任何其他的 XSL 元素(<xsl:text> 、<xsl:value-of> 等等)。

terminate 属性允许您选择在错误发生时,是否应终止转换。

16、<xsl:namespace-alias> 元素用于在输出中把样式表中的命名空间替换为不同的命名空间,换句话说,使用其他前缀替换与给定命名空间关联的前缀。

注释:<xsl:namespace-alias> 是顶层元素(top-level element),且必须是 <xsl:stylesheet> 或 <xsl:transform> 的子元素。

属性

描述

stylesheet-prefix

prefix

#default

必需。规定您希望更改的命名空间。

result-prefix

prefix

#default

必需。为输出规定期望的命名空间。

 

17、<xsl:number> 元素用于测定在源中当前节点的整数位置。它也用于将格式化的数字插入结果树。

属性

描述

count

expression

可选。XPath 表达式,规定要计算的节点。

level

single

multiple

any

可选。控制如何分配序号。

值可以是:

single (默认)

multiple

any (Netscape 6 不支持)

from

expression

可选。XPath 表达式,规定从何处开始计数。

value

expression

可选。规定用户提供的数字,用于代替产生的序号。

format

formatstring

可选。定义数字的输出格式。可以使用的值

lang

languagecode

可选。规定用于编号的语言字母表。

letter-value

alphabetic traditional

可选。消除使用字母的编号序列之间的歧义。值 "alphabetic" 指定字母序列;值 "traditional" 指定其他序列。默认值为 "alphabetic"。

grouping-separator

character

可选。规定使用什么字符来分隔组或数字。默认是逗号。

grouping-size

number

可选。规定分组的大小。默认是 3。

式标记

生成的序列

1

1 2 3 4 5 ... 10 11 12 ...

01

01 02 03 ... 19 10 11 ... 99 100 101...

a

a b c . .

A

A B C ...Z AA AB AC...

i

i ii iii iv v vi vii viii ix x...

I

I II III IV V VI VII VIII IX X...

         

18、<xsl:output> 元素定义了输出文档的格式。

注释:<xsl:output> 是顶层元素(top-level element),必须是 <xsl:stylesheet> 或 <xsl:transform> 的子节点。

method

xml

html

text

name

可选。定义输出的格式。默认是 XML。Netscape 6 仅支持 "html" 和 "xml"。

version

string

可选。设置输出格式的 W3C 版本号。(仅在 method="html" or method="xml" 时使用)。

encoding

string

可选。设置输出中编码属性的值。

omit-xml-declaration

yes

no

可选。 "yes" 规定在输出中省略 XML 声明 (<?xml...?>)。 "no" 规定应在输出中包含 XML 声明。默认是 "no"。

standalone

yes

no

可选。规定 XSLT 处理器是否应输出独立文档声明;该值必须为 yes 或 no。默认是 "no"。Netscape 6 不支持该属性。

doctype-public

string

可选。规定 DTD 中要使用的公共标识符。即输出中 DOCTYPE 声明的 PUBLIC 属性的值。

doctype-system

string

可选。规定 DTD 中要使用的系统标识符。即输出中 DOCTYPE 声明的 SYSTEM 属性的值。

cdata-section-elements

namelist

可选。一个空格分隔的元素列表,这些元素的文本内容应作为 CDATA 部分来输出。

indent

yes

no

可选。在输出结果树时是否要增加空白;该值必须为 yes 或 no。Netscape 6 不支持该属性。

media-type

string

可选。定义输出的 MIME 类型(数据的媒体类型)。默认是 "text/xml"。Netscape 6 不支持该属性。

19、<xsl:param> 元素用于声明局部或全局参数。

注释:如果在模板内声明参数,就是局部参数,如果作为顶层元素来声明,就是全局参数

属性

描述

name

name

必需。规定参数的名称。

select

expression

可选。规定 XPath 表达式,该表达式是参数的默认值。

20、<xsl:preserve-space> 元素用于定义保留空白的元素。

<xsl:strip-space> 元素用于定义删除空白的元素。

注释:保留空白是默认的设置,所以只有当使用 <xsl:strip-space> 元素使才有必要使用 <xsl:preserve-space> 元素。

注释:<xsl:preserve-space> 元素和 <xsl:strip-space> 元素都是顶层元素(top-level element)。

21、<xsl:processing-instruction> 元素可向输出写一条处理指令,即生成处理指令节点。

name

process-name

必需。规定处理指令的名称。

22、<xsl:sort> 元素用于对结果进行排序。

注释:<xsl:sort> 总是位于 <xsl:for-each> 或 <xsl:apply-templates> 内部。

select

XPath-expression

可选。规定节点的排序关键字,即根据哪个节点或节点集来排序。

lang

language-code

可选。规定排序所用的语言。

data-type

text

number

qname

可选。规定被排序的数据的数据类型。默认是 "text"。

order

ascending

descending

可选。规定排序顺序。默认是 "ascending"。

case-order

upper-first

lower-first

可选。规定是否首先按大写字母顺序进行排序。

23、<xsl:stylesheet> 和 <xsl:transform> 元素是完全同义的元素。都被用来定义样式表的根元素。

version

version

必需。规定样式表的 XSLT 版本。

extension-element-prefixes

list

可选。扩展元素的命名空间前缀列表,用空格分隔。

Netscape 6 不支持该属性。

exclude-result-prefixes

list

可选。不应再输出中出现的命名空间前缀列表,用空格分隔。

id

name

可选。样式表的唯一 id。

Netscape 6 不支持该属性。

24、<xsl:template> 元素包含了当匹配指定节点时要应用的规则。

match 属性用于把模板关联到某个 XML 元素。match 属性也能用于为 XML 文档的全部分支定义模板(比如,match="/" 定义了整个文档)。

注释:<xsl:template> 是顶层元素(top-level element)。

name

name

可选。为模板定义名称。

注释:如果省略该属性,则必须设置 match 属性。

match

pattern

可选。模板的匹配模式。

注释:如果省略该属性,则必须设置 name 属性。

mode

mode

可选。为模板规定模式。

priority

number

可选。模板的优先级编号。

25、<xsl:text> 元素用于向输出写文本,即通过样式表生成文本节点。

disable-output-escaping

yes

no

可选。 默认值为 "no"。如果值为 "yes",通过实例化 <xsl:text> 元素生成的文本节点在输出时将不进行任何转义。 比如如果设置为 "yes",则 "<" 将不进行转换。如果设置为 "no",则被输出为 "&lt;"。 Netscape 6 不支持该属性。

26、<xsl:stylesheet> 和 <xsl:transform> 元素是完全同义的元素。都被用来定义样式表的根元素。

27、<xsl:value-of> 元素可提取选定节点的值。

<xsl:value-of> 元素可用于选取某个 XML 元素的值,并把它输出。

注释:select 属性(必选)的值是一个 XPath 表达式。

select

expression

必需。XPath 表达式,规定了从哪个节点/属性来提取值。

disable-output-escaping

yes

no

默认值为 "no"。如果值为 "yes",通过实例化 <xsl:text> 元素生成的文本节点在输出时将不进行任何转义。 比如如果设置为 "yes",则 "<" 将不进行转换。如果设置为 "no",则被输出为 "&lt;"。

 

28、<xsl:variable> 元素用于声明局部或全局的变量。

注释:如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是本地的。

注释:一旦您设置了变量的值,就无法改变或修改该值!

提示:您可以通过 <xsl:variable> 元素的内容或通过 select 属性,向变量添加值!

name

name

必需。规定变量的名称。

select

expression

可选。定义变量的值。

29、<xsl:with-param> 元素定义了传递给模板的参数的值。

<xsl:with-param> 元素的 name 属性的值必须与 <xsl:param> 元素中的 name 相匹配,否则将忽略 <xsl:with-param> 元素,。<xsl:call-template> 和 <xsl:apply-templates> 中均允许使用 <xsl:with-param> 元素。

name

name

必需。规定参数的名称。

select

expression

可选。定义参数的值的 XPath 表达式。

 

 

XQuery 1.0、XPath 2.0 以及 XSLT 2.0 共享相同的函数库。

名称

描述

current()

返回当前节点作为唯一成员的节点集。

document()

用于访问外部 XML 文档中的节点。

element-available()

检测 XSLT 处理器是否支持指定的元素。

format-number()

把数字转换为字符串。

function-available()

检测 XSLT 处理器是否支持指定的函数。

generate-id()

返回唯一标识指定节点的字符串值。

key()

检索以前使用 <xsl:key> 语句标记的元素。

node-set

将树转换为节点集。产生的节点集总是包含单个节点并且是树的根节点。

system-property()

返回系统属性的值。

unparsed-entity-uri()

返回未解析实体的 URI。

posted @ 2015-06-17 10:41  秋日的私语(且行且珍惜)  阅读(434)  评论(0编辑  收藏  举报