XSD 校验工具
一份格式良好的 XML 文档仍可能是错的:缺少必需元素、给属性用了错误的数据类型,或元素顺序不对。XSD(XML 模式定义)精确地描述了文档应有的样子。这个校验工具把你的 XML 与它的 XSD 配对,运行 W3C XML Schema 校验器,并连同行号、元素以及被违反的具体约束,列出每一处违规。
如何依据 XSD 校验 XML
-
1
粘贴两个文件
一侧是 XML,另一侧是 XSD 模式。可以把多个模式一起粘贴。
-
2
运行校验
解析器把元素、属性和类型与模式声明逐一比对。
-
3
查看错误
每处违规都显示元素路径、期望的约束和实际值。
-
4
修复并重新校验
就地编辑并重新运行,无需重新加载。
XSD 检查什么
- 元素名称和基数: 必需、可选、最小/最大出现次数。
- 元素顺序: sequence、choice、all。
- 属性的存在与类型: 必需 vs 可选、默认值、固定值。
- 数据类型:
xs:string、xs:integer、xs:decimal、xs:dateTime、xs:boolean、xs:anyURI、自定义。 - 限制: 最小/最大长度、枚举、正则模式、最小/最大值。
- 引用完整性:
xs:key、xs:keyref、xs:unique用于跨元素约束。
典型错误
| 错误 | XSD 约束 |
|---|---|
缺少必需元素 <email> |
minOccurs="1" |
<phone> 元素过多 |
超出 maxOccurs="2" |
| 值「abc」不是有效的整数 | type="xs:integer" |
| 值「[email protected]」不符合模式 | xs:string 上的 xs:pattern |
| 元素顺序错误 | xs:sequence |
未知元素 <foo> |
模式中未声明 |
| 重复键 | 违反 xs:unique |
在 XSD 与替代方案之间选择
- XSD: W3C 标准,冗长、强大、广泛支持。企业级 XML 的首选。
- RELAX NG: 语法更简单,表达力相当。在文档格式中很流行(DocBook、TEI)。
- Schematron: 基于规则,对文档运行 XPath 断言。适合超出结构范畴的业务规则。
- DTD: 更老,表达力差得多。仍因 HTML 历史兼容性而在使用。
许多项目用 XSD 管结构,用 Schematron 管复杂的跨字段规则。
常见陷阱
- 命名空间必须匹配。 如果 XSD 声明了
targetNamespace="http://example.com"但 XML 没有使用该命名空间,校验会以「未找到声明」失败。 - xs:anyType 不是万能逃生口。 它匹配任何内容,但完全不给你任何校验。
- 默认值 只在属性缺失时生效。显式的空值(
attr="")不会得到默认值。 - 空白处理 因类型而异。
xs:string保留它,xs:token折叠它,xs:normalizedString把制表符/换行替换为空格。
调试工作流
- 先不带模式校验(格式良好性检查)。修掉所有解析错误。
- 然后依据模式校验。
- 聚焦第一个错误。 XSD 校验器有时会连锁报错;第一个通常最值得动手。
- 用 XPath 在大型文档中定位出问题的元素。
常见问题
不需要。可以分开粘贴,或在 XML 中通过 xsi:schemaLocation 引用模式。大多数工具两种方式都支持。
能。当出现来自不同命名空间的元素时,每个都需要自己的模式。把它们全部粘贴进来;校验器会全部加载。
XSD 1.0。底层的 libxml 引擎未实现 XSD 1.1,因此断言、条件类型、开放内容等 1.1 专有特性不会被强制校验。
不会。你的 XML 和模式只会发送到服务器以运行这一次请求的校验;之后不会被存储或记录。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
Markdown 图片生成器
生成带替代文本、title 属性和可选链接的 Markdown 图片语法。支持内联格式和引用格式输出。
IBAN 验证工具
在本地检查 IBAN 的注册国家长度、国内结构和 MOD 97-10 校验位。不上传数据,也不表示账户真实存在。
Luhn 算法校验工具
验证信用卡号、IMEI、SIN及其他受Luhn校验保护的号码。返回验证结果(通过或失败),并显示每个校验步骤及校验和计算过程。
此工具还提供其他语言版本
- XSD 검증기 [KO]
- مُحقق تنسيق XSD [AR]
- Validador XSD [ES]
- XSDバリデーター [JA]
- XSD-validator [NL]
- Bộ xác thực XSD [VI]
- Validateur XSD [FR]
- Walidator XSD [PL]
- XSD-Validator [DE]
- เครื่องตรวจสอบความถูกต้องของ XSD (XSD Validator) [TH]
- XSD-validerare [SV]
- Validator XSD [ID]
- Validador XSD [PT]
- XSD Doğrulayıcı [TR]
- Validator XSD [IT]
- XSD Validator [EN]
- Валидатор XSD [RU]