XSLT的xsl:number怎么给列表自动编号

煙雲
发布: 2025-12-15 16:18:02
原创
487人浏览过
xsl:number 是 XSLT 中用于自动生成结构化编号的指令,支持同级顺序编号、多级嵌套编号(level="multiple")、跨层级连续编号(level="any")及格式定制(format、separator、value等)。

xslt的xsl:number怎么给列表自动编号

xsl:number 是 XSLT 中专门用于生成编号的指令,特别适合给 XML 中结构化的列表(比如嵌套的 <item></item><section></section><chapter></chapter> 等)自动编号,无需手动写计数逻辑。

基础用法:简单顺序编号

最常见的是给同级元素按出现顺序编号,比如给所有 <li> 加 1、2、3…

示例 XML:
<list>
  <li>苹果</li>
  <li>香蕉</li>
  <li>橙子</li>
</list>
登录后复制
对应 XSLT:
<xsl:template match="li">
  <div><xsl:number/>. <xsl:apply-templates/></div>
</xsl:template>
登录后复制

输出就是:
1. 苹果
2. 香蕉
3. 橙子

层级编号:支持多级嵌套(如 1.1、2.3.1)

level="multiple" + countfrom 属性,就能实现类似文档章节的编号。

    <li> level="multiple":启用多级累计编号 <li> count="section":只对 <section></section> 元素编号(跳过其他元素) <li> from="book":从最近的 <book></book> 开始计数(限定作用范围)
XML 示例:
<book>
  <section>引言</section>
  <section>第一章</section>
    <section>第一节</section>
    <section>第二节</section>
  <section>第二章</section>
</book>
登录后复制
XSLT:
<xsl:template match="section">
  <h2><xsl:number level="multiple" count="section" from="book"/> <xsl:apply-templates/></h2>
</xsl:template>
登录后复制

结果会是:
1 引言
2 第一章
2.1 第一节
2.2 第二节
3 第二章

自定义格式:加前缀、分隔符、起始值

通过 formatvalueseparator 控制外观:

ChatCut
ChatCut

AI视频剪辑工具

ChatCut 1086
查看详情 ChatCut
    <li> format="a)" → a)、b)、c) <li> format="I." → I.、II.、III. <li> separator=". " → 把层级间分隔符改成点加空格(默认是点) <li> value="position() + 10" → 从 11 开始编号(支持 XPath 表达式)
例如:
<xsl:number format="A." value="position()" separator=". "/>
登录后复制

对第 3 个匹配项输出:C.

注意边界情况

默认只统计“当前节点在匹配路径中的位置”,不是全局计数。如果想跨不同父节点连续编号(比如所有 <step></step> 不管在哪都 1→2→3),得用 level="any"

    <li> level="any":在整个文档中按文档顺序编号所有匹配 count 的节点 <li>慎用:可能破坏层级语义,建议优先用 level="multiple" + 合理 from <li>不匹配时(如没找到 from 节点), 默认输出空,可加 default="0" fallback

基本上就这些 —— 掌握 levelcountfromformat 四个核心属性,就能覆盖绝大多数自动编号需求。

以上就是XSLT的xsl:number怎么给列表自动编号的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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