Tidy 可将不规范 HTML 转为 XML 兼容 XHTML,需启用 --output-xhtml yes 或 --xml-output yes;前者更常用,自动修复标签闭合、引号、大小写等,并支持 -asxhtml、--indent、--wrap 0 等参数优化输出。
可以使用 HTML Tidy(常简称为 Tidy)将不规范的 HTML 转换为格式良好、符合 XML 语法的 XHTML 或纯 XML 兼容结构。
Tidy 默认输出是 HTML,要生成 XML 格式,必须启用 xml-output 或 xhtml 选项。两者略有区别:
--xml-output yes:强制以 XML 模式解析并输出,要求标签闭合、属性加引号、区分大小写等;对非 XHTML 的 HTML 可能报错或失败--output-xhtml yes:更常用,将输入转换为严格 XHTML 1.0/1.1 兼容格式,自动修复缺失闭合标签、转义特殊字符、标准化属性名(如 checked="checked"),输出内容可被标准 XML 解析器读取在终端运行 Tidy 时添加关键参数:
tidy -asxhtml --output-xhtml yes--indent auto --wrap 0 input.html > output.xhtml
常用参数说明:
-asxhtml:强制作为 XHTML 解析输入(即使文件扩展名是 .html)--output-xhtml yes:确保输出是合法 XHTML(XML 兼容)--indent auto:自动缩进,提升可读性--wrap 0:禁用行宽截断,避免文本被意外换行--clean yes(可选):移除 Microsoft Word 等生成的冗余样式和注释Tidy 在 XML/XHTML 模式下会主动修正以下典型问题:
→
, →
→
→ ),符合 XML 规范
- 嵌套错误修复:对
... 这类非法嵌套尝试重排结构
验证输出是否真正 XML 兼容
生成文件后,可用简单方式验证是否满足基本 XML 要求:
- 用 Python 快速测试:
import xml.etree.ElementTree as ET; ET.parse("output.xhtml") —— 若无异常,则可被标准 XML 解析器加载
- 检查首行是否有 XML 声明:
(Tidy 默认不加,需手动添加或用 --add-xml-decl yes)
- 确保所有标签正确嵌套、闭合,无孤立
或未转义的 字符