You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于fo:retrieve-marker的retrieve-boundary属性及标记匹配的技术问询

一、基础场景问询解答

首先明确XSL-FO中<fo:retrieve-marker>的核心匹配逻辑:retrieve-boundary定义搜索对应retrieve-class-name标记的范围,retrieve-position(默认取last)指定取范围内的第一个或最后一个匹配标记。假设三个footer标记的配置为:

  • lastPage:retrieve-boundary="page"(仅搜索当前页)
  • continuedLine:retrieve-boundary="page-sequence"(搜索当前页面序列)
  • continued:retrieve-boundary="document"(搜索整个文档)

以下是三种CASE的第二页footer匹配结果:

CASE A

page1标记顺序:continued → lastPage,分页后page2放置continuedLine标记

  • lastPage:当前页(page2)无lastPage类标记,无匹配内容
  • continuedLine:页面序列内最后一个continuedLine标记是page2的该标记,匹配page2的continuedLine
  • continued:整个文档内最后一个continued标记是page1的该标记,匹配page1的continued

CASE B

page1标记顺序:continued → lastPage → continuedLine,分页生成page2

  • lastPage:当前页(page2)无lastPage类标记,无匹配内容
  • continuedLine:页面序列内最后一个continuedLine标记是page1的该标记,匹配page1的continuedLine
  • continued:整个文档内最后一个continued标记是page1的该标记,匹配page1的continued

CASE C

page1放置continued标记,分页后page2标记顺序:lastPage → continuedLine

  • lastPage:当前页(page2)的lastPage标记是页内最后一个该类标记,匹配page2的lastPage
  • continuedLine:页面序列内最后一个continuedLine标记是page2的该标记,匹配page2的continuedLine
  • continued:整个文档内最后一个continued标记是page1的该标记,匹配page1的continued
二、补充场景问询解答

retrieve-boundary的作用是限制<fo:retrieve-marker>搜索对应class-name标记的范围,而非控制是否调用该retrieve-marker元素:

  1. 无论retrieve-boundary设为何值,footer中的每个<fo:retrieve-marker>都会被处理器解析执行
  2. 它的核心逻辑是:在指定范围内(当前页/页面序列/整个文档)查找匹配retrieve-class-name的标记,若找到则输出标记内容;若未找到,则无输出(或使用默认值,取决于处理器实现)

你看到所有retrieve-marker都被“调用”,是因为处理器会遍历每个retrieve-marker元素执行搜索逻辑,只是当范围内无匹配标记时,该元素不会输出内容而已。

内容的提问来源于stack exchange,提问作者Rito Sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:14:57