XSLT主要元素2

1、<xsl:namespace-alias> 元素

定义和用法

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

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

例子:输入XML文档

<soapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:q0="http://tobacco/ecs/nat/med/receivebusinessreq"

>

<soapenv:Body>

<q0:receiveRequest>

<q0:comCode>comCode</q0:comCode>

<q0:indCode>indCode</q0:indCode>

<q0:requestNum>requestNum</q0:requestNum>

<q0:request>request-xml Content</q0:request>

</q0:receiveRequest>

</soapenv:Body>

</soapenv:Envelope>

用于转换的XSLT文档:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"

xmlns:q0="http://tobacco/ecs/nat/med/receivebusinessreq"

xmlns:out="http://tobacco/ecs/com/med/transRequestCo"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:namespace-alias stylesheet-prefix="q0" result-prefix="out"/>

<xsl:template match="q0:receiveRequest">

<soapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<out:transRequest>

<q0:comCode>This is <xsl:value-of select="q0:comCode"/> </q0:comCode>

<q0:indCode>This is <xsl:value-of select="q0:indCode"/></q0:indCode>

<q0:requestNum>This is <xsl:value-of select="q0:requestNum"/></q0:requestNum>

<q0:requestXML>This is <xsl:value-of select="q0:request"/></q0:requestXML>

</out:transRequest>

</soapenv:Body>

</soapenv:Envelope>

</xsl:template>

</xsl:stylesheet>

输出的转换结果:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:q0="http://tobacco/ecs/nat/med/receivebusinessreq"

xmlns:out="http://tobacco/ecs/com/med/transRequestCo">

<soapenv:Body>

<out:transRequest>

<out:comCode>This is comCode</out:comCode>

<out:indCode>This is indCode</out:indCode>

<out:requestNum>This is requestNum</out:requestNum>

<out:requestXML>This is request-xml Content</out:requestXML>

</out:transRequest>

</soapenv:Body>

</soapenv:Envelope>

结果显示:名称空间发生了变化;

由q0为QName变为由out为QName的前缀。

2、空白处理 strip-space及preserve-space:对空白内容的处理,不是空格的处理!!!!

默认是保留空白。

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

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

<xsl:preserve-space elements="list-of-element-names"/>
<xsl:strip-space elements="list-of-element-names"/>

注意:elements为必需。一个空格分隔的元素列表,规定了保留/删除空白的元素。

注释:列表中可包含 "*" 和 "prefix:*",这样就可以加入所有元素或来自特定命名空间的所有元素。

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--country company price year的文本内容如果只有空格,则会删除空白 -->
<xsl:strip-space elements="country company price year" />
<xsl:preserve-space elements="title artist" />
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="catalog/cd">
<p>
<xsl:value-of select="title" /><br />
<xsl:value-of select="artist" /><br />
<xsl:value-of select="country" /><br />
<xsl:value-of select="company" /><br />
<xsl:value-of select="price" /><br />
<xsl:value-of select="year" />
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

3、<xsl:variable> 元素

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

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

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

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

<xsl:variable
name="name"
select="expression"> 使用select来定义变量的值。
<!-- Content:template -->
</xsl:variable>

值得注意的地方:

如果设置了 select 属性,<xsl:variable> 元素就不能包含任何内容。如果 select 属性含有文字字符串,则必须给字符串加引号。

<xsl:variable name="color" select="‘red‘" />

<xsl:variable name="header">
<tr>
<th>Element</th>
<th>Description</th>
</tr>
</xsl:variable>

其父元素基本可以为任何的其他输出元素,这与<xsl:param>不一样;并且其值一旦设置后就不能被重新修改。

4、copy及copy-of

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

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

<xsl:copy use-attribute-sets="name-list">
<!-- Content:template -->
</xsl:copy>

例子:把 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">

<xsl:copy>

<xsl:apply-templates/>

</xsl:copy>

</xsl:template>

</xsl:stylesheet>

2)、<xsl:copy-of> 元素可创建当前节点的一个副本。

注释:当前节点的 Namespace 节点、子节点以及属性都会被自动复制!

提示:该元素可用于把相同节点的多个副本插入到输出的不同位置。

<xsl:copy-of select="expression"/>

例子:

<xsl:variable name="header">

<tr>

<th>Element</th>

<th>Description</th>

</tr>

</xsl:variable>

<xsl:template match="/">

<html>

<body>

<table>

<xsl:copy-of select="$header" />

5、import

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

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

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

语法:<xsl:import href="URI"/>

6、<xsl:include> 元素

是顶层元素(top-level element),把一个样式表中的样式表内容包含到另一个样式表中。

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

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

include与inmport的差别就在于前者是导入并且存在优先级,而后者是包含到并且不存在优先级。

7、<xsl:apply-imports> 元素

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

导入样式表中的模版规则的优先级要比主样式表中的模版规则要低。如果您希望使用导入样式表中的某条模版规则,而不是主样式表中的某条等价规则,就会用到 <xsl:apply-imports> 元素。

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

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

<xsl:output

method="xml|html|text|name"

version="string"

encoding="string"

omit-xml-declaration="yes|no"

standalone="yes|no"

doctype-public="string"

doctype-system="string"

cdata-section-elements="namelist"

indent="yes|no"

media-type="string"/>

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

提示:该元素可包含文本、实体引用,以及 #PCDATA。

<xsl:text ="yes|no">

<!-- Content:#PCDATA -->

</xsl:text>

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

<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<p>Titles:
<xsl:for-each select="catalog/cd">
<xsl:value-of select="title"/>
<xsl:if test="position() < last()-1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test="position()=last()-1">
<xsl:text>, and </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>!</xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>

10、<xsl:key> 元素

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

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

注释:键不必是唯一的!

语法

<xsl:key
name="name" 键名称
match="pattern" 匹配的元素
use="expression" 键值

/>

初次处理 XSLT 样式表时,键将存储在内部,以便简化访问。键可以简化对 XML 文档中的节点的访问,但是也许不会比使用 XPath 检索相同的节点速度更快。

<?xml version=‘1.0‘?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:key name="title-search" match="book" use="@author"/>
<xsl:template match="/">
<HTML>
<BODY>
<xsl:for-each select="key(‘title-search‘, ‘David Perry‘)">
<div>
<xsl:value-of select="@title"/>
</div>
</xsl:for-each>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>

XSLT主要元素2

时间: 2024-10-07 00:23:05

XSLT主要元素2的相关文章

XSLT主要元素

1.XSL 样式表由一个或多套被称为模板(template)的规则组成. 每个模板含有当某个指定的节点被匹配时所应用的规则. 2.<xsl:template> 元素 <xsl:template> 元素用于构建模板. match 属性用于关联 XML 元素和模板.match 属性也可用来为整个文档定义模板.match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档). 如果存在为相同元素定义的多个处理方法,那么用 mode 可以区分它们.

JavaEE XML XSL转换(XSLT)

XSL转换(XSLT) @author ixenos 定义: XSL转换机制可以指定将XML文档转换为其他格式的规则,例如,txt纯文本.XHTML或其他任何XML格式. 用途: XSLT通常用来将某种机器可读的XML格式转译为另一种机器可读的XML格式,或者将XML转译为适合人类阅读的表示格式 步骤: 1. 需要提供XSLT样式表,它描述了XML文档向某种格式转换的规则 2. XSLT处理器读入XML文档和XSLT样式表,产生所要的输出 XSLT样式表: <?xml version="1

sharepoint designer + XSLT快速构建数据展示页面

准备展示数据 准备一个测试列表,添加部分测试数据 生成母版页 1.用designer打开需要创建页面的网站 2.点击左侧"所有文件",将需要做为母板页的静态页面拖入designer内(相关的css和js文件也拖入,当然也可以建一个文件夹存在,不放在根目录) 3.在高级模式下打开此静态页面,另存为母板页 4.以高级模式编辑母板页,将需要动态展示的区域替换为占位符(多个占位符ID不要重复),替换之后保存. 使用母板页建立展示页面 1.基于母板页的建立展示页面 2.以高级模式打开展示页,使用

XSLT教程

XSL 指扩展样式表语言(EXtensible Stylesheet Language), 它是一个 XML 文档的样式表语言. XSLT 指 XSL 转换.即使用 XSLT 将 XML 文档转换为其他文档,比如 XHTML. <?xml version="1.0"?> <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http:/

XML,XSD,XSLT应用场景

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

XSLT工作原理

1.XSL processing flow An XML document and an XSL stylesheet are input to the XSL processor. Let's look at the steps in Figure 1 in more detail: Match template patterns. As the XML document content is accessed (element by element), the match attribute

XSLT

一.简介 XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言. XSL(eXtensible Stylesheet Language) -- 可扩展标记语言,主要用于将一个 XML 文档转换为另外的文档(XML 文档.HTML 文档),以及定义转换后的文档的显示外观.XSL 实际上包含了 3 种语言:XSL 转换 (XSL Transformations,XSLT).XML 路径语言 (XPath) 和 XSL 格式化对象 (XSL-FO),其中 XSLT 主

XSLT简介

什么是? http://www.w3school.com.cn/xsl/xsl_intro.asp XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言. XPath 是一种用于在 XML 文档中进行导航的语言. 什么是 XSLT? XSLT 指 XSL 转换(XSL Transformations). XSLT 是 XSL 中最重要的部分. XSLT 可将一种 XML 文档转换为另外一种 XML 文档. XSLT 使用 XPath 在 XML 文档中进行导航.

利用XSLT来换XML的根

写程序需要换XML的根,感觉很不便,于是写了一个函数,大致思路及实现如下: 首先觉得利用XSLT还能过滤一些东西,然后再发送回客户端,所以决定采用XSLT 然后就是尝试写一个换根的XSL,如下 <?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transf