验证即接受或拒绝的解析
应用在信任一份文档之前,必须先回答一个更窄的问题:这段文本对于它声称的格式是否格式良好?本系列中的验证指语法与结构检查——符合标准的解析器能否无错消费输入——而非完整的业务规则或模式认证(除非某种格式的「有效」定义本身已包含模式)。
Valid 工具族在 HTML、XML、SVG、JSON、YAML 和 CSV 上共享这一使命。若你在调试 API 载荷,可从 Valid JSON 入手;同样的思路适用于下方兄弟工具中的标记与表格文本。
各格式中「有效」的含义
不同格式对「有效」深度的理解并不一致:
- JSON — ECMA-404 / RFC 8259 语法:括号匹配、键名加引号、无尾逗号、合法数字形式。裸解析验证内不包含标准「JSON Schema」步骤。
- YAML — YAML 1.1/1.2 加载成功:缩进结构、允许的标签与标量风格。YAML 可表达 JSON 无法表达的类型与锚点;加载成功并不等于在各语言运行时中「安全加载不可信 YAML」。
- XML — 格式良好(标签匹配、合法名称、实体规则)。模式有效性(XSD/DTD)是更严格、独立的层次。
- HTML — 现行 HTML 解析规则与 XHTML 不同。验证器可能根据引擎的符合性配置标记未闭合元素、错位标签或过时构造。
- SVG — 基于 XML 的图形词汇。格式良好的 XML 是必要条件;有效 SVG 还意味着 SVG 命名空间下正确的元素嵌套与属性,尽管轻量工具往往先聚焦解析/格式良好检查。
- CSV — 以分隔符(常为逗号)分隔字段的行,并遵循引号规则(RFC 4180 系列)。「有效」通常指列数一致、引号正确转义、编码可读——而非单元格值符合业务模式。
明确所需层次可避免虚假把握:格式良好的 XML 仍可能违反行业 XSD;可解析的 JSON 仍可能缺少必填字段。
本系列子工具
- Valid HTML — 检查页面与片段中常见的 HTML 解析级问题。
- Valid XML — 检查格式良好的 XML 文档与片段。
- Valid SVG — 将 SVG 源码作为结构化图形标记进行检查。
- Valid JSON — 按标准语法规则接受或拒绝 JSON 文本。
- Valid YAML — 解析 YAML 并呈现加载/结构错误。
- Valid CSV — 检查分隔表格文本的结构一致性。
请选择与实际 Content-Type 或文件扩展名匹配的工具。除非有意要求更严格方言(例如 XHTML),不要用 JSON 解析器验证 YAML,也不要用纯 XML 检查器验证 HTML。
浏览器端验证的价值
在编写测试夹具、编辑 CMS 片段或检查复制的响应体时,本地验证可缩短反馈回路。你可在提交文件或部署配置前看到面向行的错误。文档留在浏览器中也可避免将敏感草稿上传到远程 lint 服务——但剪贴板与屏幕共享仍可能泄露内容。
此处的验证是对单元测试的补充:CI 中仍应使用与生产解析器相同的库断言规范夹具。在线检查用于探索与分诊;CI 用于回归。
值得识别的错误形态
JSON。 意外 token、未终止字符串、尾逗号、单引号、NaN。接受 JSONC 的编辑器在本地通过,却在严格生产解析器中失败。
YAML。 制表符与空格混用、键下缩进错误、歧义未引号字符串(YAML 1.1 中 on/off 布尔化)以及取决于 loader 设置的重复键。
XML/SVG。 结束标签不匹配、文本中裸 <、未定义前缀、多个顶层元素或非法控制字符。作为 HTML 嵌入片段设计的 SVG 文件可能无法作为独立 XML 文档通过。
HTML。 标签重叠、过时属性与 void 元素错误。HTML 解析器常能恢复;报告问题的验证器仍可能描述浏览器会渲染的树——将警告视为质量信号,而非总是硬性运行时失败。
CSV。 未转义引号、字段内未加引号的嵌入换行、混合分隔符(逗号与分号)以及列数漂移的不齐整行。
验证与转换
验证器回答是/否(及失败位置)。格式化器与转换器改变字节。文档可能无效却在浏览器宽容的 HTML 解析器中「看起来正常」,或 JSON 有效却不符合 API 模式。典型流水线:
- 验证所声称格式的语法。
- 可选地在应用代码中对照模式验证(JSON Schema、XSD 等)。
- 然后再转换、合并或持久化。
跳过第 1 步会在本属解析失败的神秘转换错误上浪费时间。
各格式安全要点
- XML: 当解析器解析 DTD 或实体时,billion laughs / 实体扩展与外部实体(XXE)攻击值得关注。对不可信输入应优先使用禁用外部实体的解析器。
- YAML: 部分 loader 可构造任意对象(
!!python/object类标签)。对不可信 YAML 应优先使用 safe-load API。 - HTML/SVG: 当标记嵌入页面时,script 与事件处理属性构成 XSS 面。验证 ≠ 净化。
- CSV: 在 Excel 中打开 CSV 时,电子表格客户端中的公式注入(
=CMD(...))需警惕;结构有效性无法消除此风险。 - JSON: 通常比上述格式更安全可解析,但超大载荷仍可能导致内存 DoS;应在服务端限制大小。
实用工作流
- 在归咎应用逻辑前,将 API 错误体粘贴到 Valid JSON。
- 缩进可疑时,用 Valid YAML 检查 Kubernetes 或 CI 配置片段。
- 编写导入器前,用 Valid CSV 确认电子表格导出。
- 打包前用 Valid SVG 验证手工编辑的图标。
局限性
这些工具不能替代领域模式、无障碍审计或完整 HTML 符合性套件(例如每项 WHATWG 检查)。它们不能证明 XML 满足特定 XSD、JSON 满足 OpenAPI,或 CSV 列与数据库 DDL 一致。它们也不净化活动内容。请将其作为第一道门:先结构,后语义。
相关工具
JSON 验证通过后,可用 Pretty-print JSON 排版,或用 From JSON to XML 做树形投影。验证告诉你文档是否「可食用」;其他系列决定如何「烹饪」。