XSLT 元素使用说明
原始作者 中文整理人 整理时间 版本 说明
W3C school skater 2005-8-17 0.1
XSLT 初稿
说明 W3C school
代码 互联网 MSDN
0.2
增加函数说明
互联网
2005-8-21 0.21
增加运算符说明
前言
这段时间在看有关 XML 方面的东西,苦于网上找不到比较全面的中文教程,
于是去 W3C 找到相关英文资料读,想到以后的朋友可能也会碰到这样的问题,
于是把学到的东西整理与此。本文档系翻译 W3C School 上的相关文章,翻译中
很多部分不是很准确,希望大家能帮我指出来。另外本文档会一直更新,我会陆
续把其他的 XML 使用说明放上来。本文档中所有代码,本人都调试过,都可以
正常使用。
本文档版权归原作者所有。
在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。
如需部分或者全文引用,请事先征求作者意见。
如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及
时反馈给作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。
(呵呵,这段是拷贝夏昕的话,希望夏昕别在意)。
我的邮箱是xqflying@163.com
skater
2005-8-21
目录
XSLT 元素 ................................................................................................................................3
<xsl:apply-imports> 元素 ................................................................................................3
<xsl:apply-templates> 元素.............................................................................................4
<xsl:attribute>元素 ...........................................................................................................5
<xsl:attribute-set> 元素 ...................................................................................................6
<xsl:call-template>元素....................................................................................................7
<xsl:choose>元素 .............................................................................................................7
<xsl:comment>元素..........................................................................................................9
<xsl:copy> 元素...............................................................................................................9
<xsl:copy-of> 元素 ........................................................................................................10
<xsl:decimal-format>元素..............................................................................................12
<xsl:element>元素..........................................................................................................13
<xsl:fallback>元素..........................................................................................................14
<xsl:for-each> 元素 .......................................................................................................15
<xsl:if>元素....................................................................................................................17
<xsl:import> 元素..........................................................................................................19
<xsl:include> 元素.........................................................................................................20
<xsl:key> 元素...............................................................................................................21
<xsl:message> 元素.......................................................................................................22
<xsl:namespace-alias> 元素 ..........................................................................................23
<xsl:number> 元素 ........................................................................................................24
<xsl:otherwise> 元素.....................................................................................................26
<xsl:output> 元素 ..........................................................................................................28
<xsl:param> 元素 ..........................................................................................................29
<xsl:preserve-space> 与 <xsl:strip-space> 元素 .......................................................30
<xsl:processing-instruction> 元素.................................................................................32
<xsl:sort> 元素 ..............................................................................................................33
<xsl:stylesheet> 与 <xsl:transform> 元素 ...................................................................34
<xsl:template> 元素.......................................................................................................35
<xsl:text> 元素 ..............................................................................................................37
<xsl:value-of> 元素 .......................................................................................................38
<xsl:variable> 元素
........................................................................................................39
<xsl:when> 元素............................................................................................................42
<xsl:with-param> 元素 ..................................................................................................43
XSLT 函数 ..............................................................................................................................46
current() 函数.................................................................................................................46
document() 函数 ............................................................................................................47
element-available() 函数................................................................................................49
format-number() 函数....................................................................................................50
function-available() 函数...............................................................................................52
generate-id() 函数 ..........................................................................................................53
key() 函数 ......................................................................................................................54
system-property() 函数 ..................................................................................................55
unparsed-entity-uri() 函数 .............................................................................................56
运算符和特殊字符.................................................................................................................58
附录.........................................................................................................................................58
XSLT 元素
<xsl:apply-imports> 元素
--------------------------------------------------------------------------------
定义与用法
<xsl:apply-imports>运用了一个从外部导入的 xsl 作为 Template.
导入的 Template 的样式表比宿主 xsl 的样式表优先级要低.
--------------------------------------------------------------------------------
语法
<xsl:apply-imports/>
Attributes
None
例子
假设我们有一个样式表叫"standard.xsl",它包含一个为 message elements 定义的 template
<?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">
<h2>
<xsl:apply-templates/>
</h2>
</xsl:template>
</xsl:stylesheet>
宿主样式表要能导入"standard.xsl",并且修改 message elements,像如下这样:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:import
href="standard.xsl"/><xsl:template match="message">
<div style="border:solid blue">
<xsl:apply-imports/>
</div>
</xsl:template></xsl:stylesheet>
结果会把 message elements 转变成如下这样:
<div style="border:solid blue"><h2>...</h2></div>
用这种方式,可以实现 xsl 的重用。
<xsl:apply-templates> 元素
--------------------------------------------------------------------------------
定义与用法
<xsl:apply-templates>元素将模版运用到当前元素或者是当前元素的子节点。
如果我们在<xsl:apply-templates>元素中增加一个 select 属性,它将只对与属性匹配的子元素
有效。我们可以用 select 属性来指定要处理的子节点。
--------------------------------------------------------------------------------
语法
<xsl:apply-templates select="expression" mode="name">
<!-- Content:(xsl:sort|xsl:with-param)* -->
</xsl:apply-templates>
属性
属性 值 说明
select expression
select 表达式是可选的用于指定要处理的节点。一个星号*选择
了全部的节点集。如果属性省略了,那么所有的子节点都将被选
择。
mode name
mode 也是可选的,如果对一个相同的元素有很多定义,那么用
mode 可以区分他们。
例子 1
对于文档中的每一个 tiltle 元素用 h1 元素包装。
<?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="title">
<h1><xsl:apply-templates/></h1>
</xsl:template>
</xsl:stylesheet>
例子 2
对于文档中的所有 message 元素的子元素 tiltle 用 h1 元素包装。
<?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">
<h1><xsl:apply-templates select="title"/></h1>
</xsl:template>
</xsl:stylesheet>
例子 3
对于文档中的所有 message 元素的所有子元素用 h1 元素包装,mode 属性被置为”big”。
<?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">
<h1><xsl:apply-templates select="*" mode="big"/></h1>
</xsl:template>
</xsl:stylesheet>
<xsl:attribute>元素
定义与用法
<xsl:attribute>元素被用来向元素添加属性
说明:当有相同的名称时<xsl:attribute>元素会替代当前的属性。
--------------------------------------------------------------------------------
语法
<xsl:attribute name="attributename" namespace="uri">
<!-- Content:template -->
</xsl:attribute>
属性