码迷,mamicode.com
首页 > 其他好文 > 详细

XSLT主要元素2

时间:2014-07-11 20:55:04      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:des   style   http   color   使用   os   

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,布布扣,bubuko.com

XSLT主要元素2

标签:des   style   http   color   使用   os   

原文地址:http://www.cnblogs.com/ghpaas/p/3833351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!