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。

时间: 2024-10-06 19:07:10

xlst的相关文章

Python爬虫实战(2):爬取京东商品列表

1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反,JavaScript实现的动态网页内容,无法从html源代码抓取需要的内容,必须先执行JavaScript. 我们在<Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容>一文已经成功检验了动态网页内容的抓取方法,本文将实验程序进行改写,使用开源Python爬虫

WEB服务器与应用服务器

Web服务器(Web Server) 通俗的讲,Web服务器的基本功能就是提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.与客户端的网络浏览器配合.因为Web服务器主 要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的. 以这样的定义,IIS.Apache.Tomcat都可以属于Web服务器. [转载使用,请注明出处:http://blog.csdn.net/mahoking] Web服务器(Web Server)可以解析(handles)HT

SpringMVC导入Excule并解析Excule中的数据以及下载Excule模板

把Excule导入,并把Excule中的数据解析出来,包装成对象的属性,保存在数据库中: Excule中的数据: 1.web.xml的配置: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/java

Struts2中 Result类型配置详解(转)

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出.在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示:public interface Action{    public static final String SUCCESS =

struts2中struts.xml配置文件详解

struts.xml的常用配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts

Struts2中 Result类型配置详解

一个result代表了一个可能的输出.当Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出. 在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,如下所示: public interface Action {     public static final String SUCCES

solr 简单搭建 数据库数据同步(待续)

原来在别的公司负责过文档检索模块的维护(意思就是不是俺开发的啦).所以就稍微接触和研究了下文档检索. 文档检索其实是全文检索,是通过一种技术把N多文档进行一定规律的切割归类,然后创建易于搜索的索引式文件,然后搜索具有某些规律的文档时,能够通过快速定位索引,然后根据索引提供的信息精确定位到文档从而实现迅速找到文档.这个文档一般成为条目. 上家公司的时候使用的是Lucene加上Zoie实现的.lucene是apache下的开源项目,不过并不是全文检索的实现,而是一个全文检索的引擎,是一个架构,是其他

Struts2的result中各种type类型以及配置文件的一些细节

Struts2支持的不同类型的返回结果为: Chain Result-->type="chain"用来处理Action链 Dispatcher Result -->type="dispatcher"用来转向页面,通常处理JSPFreeMarker Result -->type="freemarker"处理FreeMarker模板HttpHeader Result -->type="httpheader"

XML,XSD,XSLT应用场景

XML:数据交换的标准  1.数据通信: 其实HTTP就是标准的报文格式,早开发中,设计报文的格式是可以看出这个系统的好坏  2.配置文件:设计一个良好的配置文件比写代码要难,比如Spring的配置文件,Mule的配置文件,Spring Batch/Intergation的配置文件都是设计优秀的配置文件,类似我们                            框架,写起来不是很容易,一个好的XML可以看出一个系统设计的好坏  例子:  异构系统之间交换,基本都是XML,当然JSON也是一