XSLT 函数

XSLT 函数速查手册(2025 终极版)

按真实使用频率排序,标明所属版本 + 一句话作用 + 必背示例

频率函数名版本类型一句话作用必背示例
1current()1.0+上下文返回当前正在处理的节点(常用于复杂谓语)key('k', current()/id)
2document()1.0+文件加载外部 XML 文件(多文档合并神器)document('config.xml')
3format-number()1.0+数字数字格式化(千分位、两位小数)format-number(12345.6, '#,##0.00') → 12,345.60
4contains()1.0+字符串判断是否包含子串contains(title, 'XSLT')
5starts-with()1.0+字符串判断是否以某串开头starts-with(@id, 'b')
6substring()1.0+字符串取子串substring(title, 1, 10)
7string-length()1.0+字符串取字符串长度string-length(normalize-space(.)) = 0
8normalize-space()1.0+字符串去首尾空白、压缩中间空格(神级函数)normalize-space(text())
9count()1.0+节点集统计节点数量count(//book)
10position() / last()1.0+上下文在 for-each 中获取位置和总数(表格行号必备)<xsl:number value="position()"/>
11not()1.0+布尔取反not(@status)
12ceiling() / floor() / round()1.0+数学取上限/下限/四舍五入round(price * 1.08)
13translate()1.0+字符串字符替换(常用于去横线、转大小写)translate(., '-', '')
14concat()1.0+字符串字符串拼接concat('ISBN:', @isbn)
15string()1.0+类型转换强制转字符串string(@price)
16number()1.0+类型转换转数字(NaN 则返回 NaN)number('123.45')
17boolean()1.0+类型转换转布尔boolean(//book)
18name() / local-name() / namespace-uri()1.0+节点信息获取节点名、局部名、命名空间name()
19generate-id()1.0+ID生成唯一 ID(常用于 HTML anchor)<a name="{generate-id()}">
20system-property()1.0+系统获取 XSLT 处理器信息system-property('xsl:vendor')
21element-available() / function-available()1.0+动态检测判断元素或函数是否可用function-available('format-date')
22unparsed-entity-uri()1.0+实体获取未解析实体的 URI极少用
23key() + <xsl:key>1.0+索引类似数据库索引,性能提升 100 倍key('book-by-id', @id)
24format-date() / format-dateTime() / format-time()2.0+日期格式化日期(最常用日期函数)format-date(current-date(), '[Y]-[M01]-[D01]')
25current-date() / current-dateTime() / current-time()2.0+日期获取当前日期时间current-dateTime()
26lower-case() / upper-case()2.0+字符串大小写转换(1.0 只能用 translate 模拟)lower-case(title)
27matches() / replace() / tokenize()2.0+正则正则匹配、替换、分词(神器级)replace(phone, '\D', '')
28xml-to-json() / json-to-xml()3.0+JSON原生 XML ↔ JSON 互转(2025 年最爽功能)xml-to-json(.)
29serialize()3.0+序列化把节点树重新序列化成字符串(控制缩进等)serialize($node, map{'indent':true()})
30random-number-generator()3.0+随机生成随机数random-number-generator()?number
31map:* / array:* 函数群3.0+高阶数据结构Map 和 Array 操作(函数式编程)map:get($config, 'title')
32trace()3.0+调试调试打印(比 message 更强)trace($value, '当前价格:')

2025 年必背 15 个函数组合(直接复制)

场景代码(一行搞定)
去掉所有非数字replace($str, '\D', '')
价格加税 8.5% 并保留两位小数format-number(price * 1.085, '#,##0.00')
ISBN 去横线translate(@isbn, '-', '')
判断节点是否存在exists(//error)
取第一个匹配的节点(//book[@new])[1]
今天日期(2025-11-26)format-date(current-date(), '[Y0001]-[M01]-[D01]')
XML 转 JSON(最简)xml-to-json(., map{'indent':true()})
去首尾空白并判断空normalize-space(.) = ''
生成 HTML id 并锚点<h2 id="{generate-id()}"><xsl:value-of select="."/></h2>
交叉引用(key 的经典用法)<xsl:key name="b" match="book" use="@id"/><xsl:for-each select="//ref"><xsl:value-of select="key('b', .)/title"/></xsl:for-each>
价格排序<xsl:perform-sort select="book"><xsl:sort select="xs:decimal(price)" order="descending"/></xsl:perform-sort>
分割字符串成数组tokenize($csv-line, ',')
动态 XPath(3.0)<xsl:evaluate xpath="$path"/>
随机排序(洗牌)<xsl:perform-sort select="book"><xsl:sort select="random-number-generator()?number"/></xsl:perform-sort>
合并多个 XMLcollection('data/?select=*.xml')

把这张表保存为 PDF 或打印出来贴墙上,你就拥有了 XSLT 函数的“降龙十八掌”。
需要我发你 Markdown / PDF / Excel 可打印版吗?立刻打包给你!

文章已创建 2783

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部