XSLT的用于遍历节点集合,需指定select属性(XPath表达式),内部上下文自动切换为当前节点,用position()获取序号,作用域限于块内,空选择静默跳过。

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> → 遍历当前元素的 id 和 class 两个属性(联合轴)在 <for-each></for-each> 内部,上下文节点自动切换为当前被遍历的节点,所以:
<value-of select="."></value-of> → 输出当前节点的字符串值(文本内容)<value-of select="title"></value-of> → 输出当前节点下子元素 title 的文本<value-of select="../@category"></value-of> → 向上查父节点的 category 属性<if test="price > 10">…</if> → 基于当前节点做条件判断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 块内部<apply-templates></apply-templates> + 模板匹配,而不是硬套多层 for-each基本上就这些。写熟了 select + position() + . 这三个点,90% 的列表场景都能干净搞定。
以上就是XSLT for-each循环怎么使用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号