0

0

XSLT的xsl:number怎么用 自动编号

煙雲

煙雲

发布时间:2026-01-05 11:35:14

|

205人浏览过

|

来源于php中文网

原创

xsl:number的核心用途是结构感知编号,即基于源文档树结构的路径计数器,而非简单递增;它按xpath节点关系动态计算同级或祖先层级的匹配节点位置,支持single/multiple层级、count过滤、from重置起点及value自定义值。

xslt的xsl:number怎么用 自动编号

xsl:number 的核心用途:不是“自动编号”,而是“结构感知编号”

很多人以为 xsl:number 是个傻瓜式递增计数器(像 position() 那样),其实它本质是**基于源文档树结构的路径计数器**。它不依赖模板调用顺序,而是按 XPath 节点关系动态计算——比如“当前 section 在其父 chapter 下排第几个”,或“从最近的 book 开始累计所有 page”。用错场景时,常出现序号跳变、重置失效、跨层级混乱等问题。

最常用组合:count + level="single" 实现同级元素编号

这是新手上手最快、也最容易踩坑的用法。默认 level="single" 表示:只统计与当前节点同级、且匹配 count 表达式的节点中,位于它前面的个数(+1)。

  • count="itemA" → 只数同级的 itemA 元素(忽略 itemB
  • count="*" → 数所有同级子元素(但要注意命名空间影响)
  • 若没写 count,默认等价于 count="name()",即只数同名同级节点
  • 不加 from 时,计数起点是最近的祖先节点(可能跨多层),容易误触重置逻辑
<xsl:template match="itemA">
  <div><xsl:number count="itemA" format="1." /><xsl:value-of select="."/></div>
</xsl:template>

输出类似:1. a2. a3. a……但若中间插了 <itemb></itemb>,序号不会断,因为 count="itemA" 明确过滤了它。

WPS灵犀
WPS灵犀

WPS灵犀是WPS推出的一款AI智能办公和学习助手

下载

多级编号必须用 level="multiple",别硬套 for-each 嵌套

想实现 “2.3.1” 这类章节编号?不能靠在 xsl:for-each 里嵌套多个 xsl:number,而应一条 xsl:number 统一声明路径:

  • level="multiple" 表示:沿祖先链向上,对每个匹配 count 的节点分别编号,再用 format 拼接
  • count="chapter | section | subsection" 中的管道符是“或”关系,不是层级分隔符
  • format="1.1.1" 的点数必须与 count 中的元素种类数一致(3 个类型 → 3 级)
  • 若某层祖先不匹配 count,该级编号为 0(如 subsection 直接在 root 下,中间无 section,则输出可能是 2.0.1
<xsl:number 
  count="chapter | section | subsection" 
  level="multiple" 
  format="1.1.1" />

valuefrom 是破局关键,但浏览器兼容性差

当你要格式化一个纯数字(比如数据库 ID)、或强制在某个节点重置计数时,valuefrom 很有用:

  • value="number(@id)" → 把属性值转成编号并按 format 渲染(支持 format="001" 补零)
  • from="book" → 计数只在每个 book 内部独立进行,跨 book 自动重置
  • ⚠️ 注意:format="01""a""I" 在旧版 IE 和部分 XML 工具链中不支持(Netscape 6 明确不支持)
  • 现代 XSLT 2.0/3.0 支持更好,但若目标环境是 IE 或老旧 Java XSLT 处理器(如 Xalan),建议用 concat(format-number(...), ".") 替代补零需求

真正难的从来不是写对语法,而是理解:编号逻辑绑定的是源 XML 结构,不是 XSLT 执行流。一旦数据结构调整(比如把 itemA 包进新容器),xsl:number 的行为可能完全改变——这点比任何属性都重要。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

201

2023.11.20

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

866

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

455

2024.06.27

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1939

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2116

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1150

2024.11.28

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

548

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

27

2025.12.22

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

0

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.1万人学习

C# 教程
C# 教程

共94课时 | 10.6万人学习

Java 教程
Java 教程

共578课时 | 76.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号