XSLT的number元素专门用于从XML文档中提取节点位置信息,生成符合需求的序号,支持多种格式配置,可满足不同场景下的编号需求。

number元素核心属性说明
number元素的属性决定了序号的生成逻辑和最终格式,常用的核心属性如下:
| 属性名 | 作用说明 |
|---|---|
| level | 指定序号计算的层级范围,可选值为single、multiple、any,默认是single |
| count | 指定需要计数的节点模式,只对符合模式的节点进行编号 |
| from | 指定编号的起始节点,从该节点之后的符合count条件的节点开始计数 |
| format | 指定序号的输出格式,支持阿拉伯数字、罗马数字、字母等多种格式 |
基础序号格式化示例
以下XML文档作为测试数据,包含多层级的书籍章节结构:
<book>
<chapter>第一章 基础入门</chapter>
<chapter>
<section>1.1 环境搭建</section>
<section>1.2 语法基础</section>
</chapter>
<chapter>
<section>2.1 进阶用法</section>
<section>2.2 实战案例</section>
</chapter>
</book>
如果需要给所有<chapter>节点生成阿拉伯数字序号,对应的XSLT代码如下:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="book/chapter"/>
</body>
</html>
</xsl:template>
<xsl:template match="chapter">
<p>
<xsl:number count="chapter" format="1"/>
<xsl:value-of select="."/>
</p>
</xsl:template>
</xsl:stylesheet>
上述代码中,<xsl:number>的count属性指定统计chapter节点,format设置为1,输出结果会是1、2、3这样的阿拉伯数字序号。
不同格式序号的配置方法
format属性支持多种格式标识,常见的配置方式如下:
- format="1":输出阿拉伯数字,如1、2、3
- format="01":输出两位阿拉伯数字,不足两位补0,如01、02、03
- format="i":输出小写罗马数字,如i、ii、iii
- format="I":输出大写罗马数字,如I、II、III
- format="a":输出小写英文字母,如a、b、c
- format="A":输出大写英文字母,如A、B、C
如果需要生成大写罗马数字的chapter序号,只需要修改format属性为I即可:
<xsl:template match="chapter">
<p>
<xsl:number count="chapter" format="I"/>
<xsl:value-of select="."/>
</p>
</xsl:template>
层级序号的实现方式
对于包含子节点的层级结构,需要生成类似1.1、1.2、2.1这样的层级序号,此时需要设置level属性为multiple,同时指定count多类节点:
<xsl:template match="section">
<p>
<xsl:number count="chapter|section" level="multiple" format="1.1"/>
<xsl:value-of select="."/>
</p>
</xsl:template>
上述代码中,level设置为multiple表示计算多层级的位置,count指定统计chapter和section节点,format设置为1.1表示输出两位层级的序号,最终section节点的输出结果会是1.1、1.2、2.1、2.2这样的格式。
from属性的使用场景
from属性可以指定编号的起始节点,比如需要从第二个chapter节点开始编号,起始序号为1,配置方式如下:
<xsl:template match="chapter[position() > 1]">
<p>
<xsl:number count="chapter" from="chapter[2]" format="1"/>
<xsl:value-of select="."/>
</p>
</xsl:template>
此时第一个chapter节点不会被编号,第二个chapter节点编号为1,第三个编号为2,符合from属性指定的起始逻辑。
XSLTnumber元素序号格式化xsl_number修改时间:2026-06-11 05:27:32