XML / XSD 验证器
服务器端示例
验证结果
XSD 架构
XML 文档
技术详情
XML / XSD 校验器的工作原理
工具功能
此 XML XSD 校验器通过服务端处理,根据 XML Schema 定义对 XML 文档进行校验。该工具会校验 Schema 中定义的结构、数据类型、元素顺序以及属性要求。校验失败时,会在可用的情况下报告包含行号与列号的具体错误。该校验器可处理命名空间、复杂类型、sequence 约束,以及诸如模式匹配和值限制等 Schema facet。
示例:图书目录校验
考虑一个要求图书必须具有整数 ID 和十进制价格的 XSD Schema:
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>像 <book id="abc"><price>not-a-number</price></book> 这样的无效 XML 会因 ID 属性与 price 元素都违反类型约束而校验失败。
常见使用场景
开发者在与 SOAP API 集成、校验配置文件或处理数据交换格式时会使用 XML Schema 校验。常见场景包括:根据已发布的 Schema 校验 API 响应、在部署前检查配置文件,以及在 ETL 流水线中确保数据质量。该校验器尤其适合在数据进入生产系统之前捕获类型不匹配、缺少必填元素以及元素顺序错误等问题。
校验引擎与限制
此工具通过 libxmljs Node.js 绑定使用 libxml2,提供对 XML Schema 1.0 的兼容性。出于安全考虑,校验器完全在服务端处理 Schema,不会获取外部资源或解析基于网络的 import。为安全起见,外部实体处理(XXE)已禁用。只有当所有被引用的 Schema 都包含在主 XSD 内容中时,Schema include 与 import 才能生效。
- 网络访问:出于安全原因已阻止
- Schema 导入:必须内联,不支持外部解析
- 外部实体:已禁用(XXE 防护)
- 处理限制:适用合理的大小限制
服务器端处理 vs 客户端处理
客户端的 XML 良构性检查足以进行基础语法验证。然而,XSD 验证需要专用引擎,因为浏览器不包含 XML Schema 处理器。服务器端验证可确保结果一致,能够处理继承与导入等复杂的 schema 特性,并将潜在恶意的 XML 内容隔离在安全边界之外。