XSLT for-each循环怎么使用

煙雲
发布: 2025-12-14 19:45:31
原创
815人浏览过
XSLT的用于遍历节点集合,需指定select属性(XPath表达式),内部上下文自动切换为当前节点,用position()获取序号,作用域限于块内,空选择静默跳过。

xslt for-each循环怎么使用

XSLT 的 <for-each></for-each> 是最常用的遍历工具,本质是“对选中的每个节点执行一次模板内容”,不带内置计数变量,也不改变全局上下文,用对了很简洁,用错了容易嵌套混乱。

核心写法就一条规则

必须带 select 属性,值是一个 XPath 表达式,指向你要遍历的节点集合:

  • <for-each select="book"></for-each> → 遍历当前上下文下的所有 book 元素
  • <for-each select="catalog/cd[position() <= 5]"></for-each> → 只取前 5 个 cd 节点
  • <for-each select="@id | @class"></for-each> → 遍历当前元素的 idclass 两个属性(联合轴)

循环里怎么取当前节点的内容

<for-each></for-each> 内部,上下文节点自动切换为当前被遍历的节点,所以:

Musho
Musho

AI网页设计Figma插件

Musho 76
查看详情 Musho
  • <value-of select="."></value-of> → 输出当前节点的字符串值(文本内容)
  • <value-of select="title"></value-of> → 输出当前节点下子元素 title 的文本
  • <value-of select="../@category"></value-of> → 向上查父节点的 category 属性
  • <if test="price > 10">…</if> → 基于当前节点做条件判断

想加序号?别手写变量,用 position() 就行

XSLT 没有传统 for 循环的 i++,但 position() 函数天然返回当前迭代位置(从 1 开始):

  • <value-of select="position()"></value-of> → 输出 1、2、3…
  • <number format="A. "></number> → 输出 A.、B.、C.…(更语义化,支持嵌套编号)
  • 组合用:<value-of select="title"></value-of>

常见踩坑提醒

  • 不能在 <for-each></for-each> 外面直接引用循环内定义的 <variable></variable> —— 它的作用域仅限该 for-each 块内部
  • 不要试图在 for-each 里“修改”当前 XML 结构 —— XSLT 是函数式语言,只生成新输出,不变更源文档
  • 如果需要复杂逻辑(比如递归处理子树),优先用 <apply-templates></apply-templates> + 模板匹配,而不是硬套多层 for-each
  • select 表达式为空时,整个 for-each 块静默跳过,不会报错也不会渲染内容

基本上就这些。写熟了 select + position() + . 这三个点,90% 的列表场景都能干净搞定。

以上就是XSLT for-each循环怎么使用的详细内容,更多请关注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号