和必须物理相邻且无空格文本节点,datetime须为ISO 8601秒级精度格式,二者均为内联元素不可滥用包裹块级内容,摘要须与正文分离。

del 和 ins 必须物理相邻才能被识别为一次修订
浏览器和屏幕阅读器不会根据空格、换行或 CSS 间距来推断“删了什么、替换成什么”。 和 必须在 DOM 中紧挨着出现,中间不能插入任何其他节点(包括空格文本节点)。
- ✅ 正确写法:
旧参数新参数 - ❌ 错误写法:
(中间的空格会生成旧参数新参数Text节点,破坏语义配对) - ❌ 更隐蔽的错误:
放在富文本编辑器里粘贴后,常因格式清理丢失闭合标签,导致ABdocument.querySelectorAll('ins')查不到节点
datetime 属性必须精确到秒且符合 ISO 8601
填错 datetime 等于没写——它不是装饰,而是机器解析修订时间轴的唯一依据。非法格式不会报错,但所有 CMS、diff 工具、读屏软件都会跳过该属性。
- ✅ 合法格式只有两种:
datetime="2026-06-20T09:15:33Z"(UTC) 或datetime="2026-06-20T17:15:33+08:00"(带时区偏移) - ❌ 常见无效写法:
datetime="2026-06-20"(缺时间)、datetime="2026/06/20"(斜杠分隔)、datetime="2026-06-20 09:15"(缺T和秒) - ⚠️ 前端用
new Date().toISOString()生成时,用户本地时区偏差会导致时间戳不一致;生产环境建议从后端注入 Git 提交时间或审核时间戳,并确保补全秒级精度与Z后缀
别把 和 当块级容器用
和 是 inline 元素,HTML 规范允许它们包含块级内容(如
),但浏览器渲染和 JS 框架(React/Vue)处理时极易出问题:段落塌陷、列表缩进丢失、diff 失效。
- ❌ 危险写法:
新增段落
- 项1
- ✅ 推荐做法:拆成内联粒度,例如
新增首句
新增次句
- ⚠️ 若真需包裹多行结构,必须显式声明
ins, del { display: inline-block; },且仅限简单嵌套;复杂布局优先走 JS 动态插入,而非硬包语义标签
摘要和正文必须分离,不能塞进 / 里
HTML 本身不提供版本摘要功能。新增2段 这种写法语义混乱:它既不是新增的内容,也不是对“新增2段”这句话本身的修订。
- ✅ 正确结构:摘要独立存在,比如用
本次更新摘要
新增 2 段,删除 1 段 - ✅ 正文里所有实际增删都用带
datetime的/标记,且每个时间戳必须真实、独立、可验证 - ⚠️ 导出为 PDF 或纯文本时,
和默认消失,只剩内部文字——如果依赖这些标签做审计追溯,必须提前测试输出效果,必要时加内联样式或导出插件增强兼容性











