跳到正文

ADR-0066:递归片段与动态目的地 ​

状态:已接受。

决定 ​

离线 include 可引用其他已登记片段,复用现有编译、绑定及布局路径。父子 prefix 用 - 组合,组合后全局唯一;静态字段可引用本片段及已声明子片段的目标。外部静态目标保持,Each 继续按当前词法副本重定位。循环引用无条件拒绝;活动链最多 16 层,独立于最终 XML 树深度。缓存源解析不能免除每次展开与目标预收集的工作预算和取消检查。

XML href 与字段 target 接受既有纯数据路径表达式,不执行代码、不加载资源。动态 target 是最终完整 ID,调用方显式提供组合前缀及迭代后缀;只有静态目标参与编译及复制重定位。

DocumentTemplate.hyperlinkTemplates 以合法原型 URI 关联表达式,绑定每个文字/图片运行时在其词法范围解析,并由 ExternalDestination 校验最终地址。XML 编译器使用保留 URI 空间,禁止静态地址与原型键碰撞。布局、Display List、后端仅接收绑定成功的普通目的地。没有隐式 URL 编码或网络访问。

非法动态地址返回脱敏 INVALID_VALUE,不保留可能含凭据的原因异常;缺失路径、类型、预算和取消继续使用自身错误。表达式源码及生成字符串有界;Builder 和 toBuilder 固定映射快照。record 新增分量保留原 4/5/6 参数源码构造器,不承诺二进制兼容。

验证 ​

单测覆盖多层命名、父到子目标、循环、16/17 层、组合碰撞、隐藏分支、零次循环、动态字段及图文链接、非法协议/凭据脱敏和零外联。真实样例、隔离制品调用方、标准 OOXML 与全部新增 PDF 页的独立检查见阶段五十八。