跳到正文

ADR-0084:将语义模型映射到既有 XML 模板 ​

状态:已采纳。

背景 ​

XML 源码和资源已有普通 ZIP 保存入口,但 Java 编写或由适配器导入的语义模型不能直接进入该链路。模型中的缩进、分页约束、列表标记样式、基线位移和 Auto 列尚无完整 XML 属性;正文中的 ${...} 也不能被当成待绑定变量。

决策 ​

在现有模板适配器提供 XmlTemplateWriter,按明确子集把 Document/SectionedDocument 映射成版本 1 XML,再交给 XmlTemplateBundle 保存。扩充既有模型属性的语法,不增加模块、自定义扩展名或另一套解释器。

根属性 literal-text="true" 明确关闭文字插值;默认仍按原规则插值。控制节点继续使用数据路径。DocumentTemplate 保留旧构造器,新增显式 component 承载这一语义,反射及 record 形状变化在 API 中说明。

只保存模型已持有的完整值,不推测主题名称、原始条件/循环、运行时组件或字体句柄。图片按内容标识去重,字体与许可由调用方显式提供。无法表达的页区、注释、块及标题/列表外链默认拒绝;只有明确的真实 treatment 才能报损继续。非法 XML ID 可稳定重命名并同步引用,非法字体角色可清空,均报告实际降级。

准备时完成映射、编译、ZIP 编码并固定结果;出版时只写确切字节。复用共享 ProcessingPolicy、ExecutionOptions 和原子输出约定。统一转换通过标准源/目标接入,字体所有权保持显式。

结果 ​

受支持语义文档可以保存为可读模板、重开、编辑和再次导出。XML 源与模型的内部默认运行表示可以规范化;文档内容、几何、资源和实际输出分别核对。模板源码保存、模型到模板映射、标准格式内嵌恢复、任意跨格式无损往返是不同能力,后两者继续独立跟踪。

页区保存及同类共享来源随后由 ADR-0085扩充;本决策的初始边界保留为历史。

公共契约和当前不支持项见 API,完整模型/三轮源码控制、Maven 调用方及 PDF/DOCX 独立证据见阶段七十八。