ADR-0053:离线 HTML/CSS 语义子集导入
状态:已采纳。
背景
语义 HTML 导出不提供输入能力。HTML 输入需要可靠树解析与源位置,同时必须区分语义映射、浏览器布局和源结构保留。
决策
HtmlImporter在 Web 适配器内部使用 jsoup 1.21.2,仅解析显式 String 和有限选择器。无传递运行依赖;MIT 许可、Java 8 字节码及实际制品摘要已核对。公共签名不暴露其类型。- 接受元素/属性白名单和有限 CSS:元素、类、ID、后代/直接子选择器及静态声明;important、内联、特异性、源码顺序和继承明确计算。字号/长度仅接受已定义单位,不调用浏览器排版。
- 文本、强调、列表、链接、显式图片及两层合并表格映射到既有模型。物理格路径和原始 UTF-16 范围进入共享报告;未建模元素、样式与属性默认失败,明确降级/丢弃须记录。
- 资源从调用方登记获取;脚本、事件属性、外部样式、CSS 资源、危险链接与外部 doctype 无条件拒绝。预检先验证全部源树,危险内容不能藏在将被丢弃的子树中。
- CSS margin 折叠不能由模型的累加间距表达,转换时明确报损。隐藏内容只有显式 DISCARD 通道;隐藏的表格行/格无法保留覆盖时失败。解析器修复输入也须报损。
- 输入/行/树/深度/表格槽/文字/报告/工作有界,解析前后及遍历检查取消。第三方树构建不是硬中断或恶意输入沙箱。
边界
不承诺浏览器像素布局、完整 CSS、任意 HTML 无损往返或源文件结构保留。浮动、定位、脚本、外部字体、复杂选择器与动态媒体规则不进入当前映射。输出阶段的目标损失继续由对应适配器判断。