XML / XPath / XSD

XSD 转 JSON Schema每项映射与损失都有据可查

粘贴 XSD 或载入示例,选择目标草案,导出前核对逐项报告。

XSD 转 JSON Schema

XSD 输入

JSON Schema 结果

模式文本只在本浏览器转换,不会上传。

转换选项

XML 属性在结果中固定使用 @ 前缀。

请粘贴 XSD 或载入示例。

XSD 转 JSON Schema 适合把已有 XML 契约迁入 JSON API。输入是模式定义,不是 XML 实例;输出是用于校验 JSON 的 Schema,并不会生成示例数据。

使用 XML Schema 转 JSON Schema 时,先确认哪个全局元素才是文档根。工具将转换结果与近似映射并列,避免把不同规范当成完全等价。

为什么在这里做 XSD 转 JSON Schema?

生成模式时同步保留转换依据。

逐项看见映射损失

XSD 转 JSON Schema 会给元素和属性附上来源路径。顺序、命名空间与正则语义的差异标为近似;不能映射的规则也留在报告中。

一棵 XSD 结构树分别连接生成的 JSON Schema 与逐项映射报告。

为多个全局元素选根

一份 XSD 可能定义多个全局元素。根元素选择会改变输出引用,报告也会注明本次选用的入口。

两个全局 XSD 元素分别指向不同的 JSON Schema 根选择。

导出前先核对这三处决定

01

确认根元素

多个全局元素时,首次转换后在选项里选择真正的文档根;默认取第一个,切换后旧结果立刻过期。

02

确认草案版本

默认使用 2020-12,也可选 Draft-07。两种结果会使用对应的定义关键字与 $schema;关闭自动转换后可按 Ctrl/Cmd+Enter。

03

读完损失再导出

JSON Schema 自身校验通过不等于与 XSD 无损等价。按来源路径检查近似与未转换项,过期结果不能复制或下载。

结构映射与结果校验

类型与可复用定义

命名简单类型和复杂类型会进入可复用定义;枚举、长度与数值边界在语义可对应时转换。

元素、重复项和属性

minOccurs 决定是否必填,maxOccurs 生成数组;XML 属性统一加 @ 前缀,避免覆盖同名子元素。

按目标草案校验

生成结果会按所选 JSON Schema 草案编译,并检查本地引用;校验失败时阻止导出。

两个规范不一致的地方

模式不等于实例
本页把 XSD 定义转成 JSON Schema,不把 XML 数据转成 JSON,也不拿生成的模式直接验证 XML。
转换不保证无损
XML 元素顺序和属性命名空间无法作为普通 JSON 对象属性完整保留。报告会标出近似与未转换规则,不会默默丢弃。
不自动读取外部模式
遇到 xs:include、xs:import、redefine 或 override 会阻止导出;本页不会联网获取依赖,需先整理成单文件模式。
只处理受限范围
XSD 1.1 断言、身份约束和混合内容需人工处理。拒绝 DOCTYPE;输入上限为 1000000 字符、20000 节点。

XSD 转 JSON Schema 常见问题

如何从现有 XSD 生成 JSON Schema?

粘贴现有 XSD,选择全局根元素与目标草案,再核对逐项映射报告。生成的是 JSON Schema;带损失的规则仍要人工处理。

XSD 的属性怎样映射到 JSON Schema?

XML 属性会变成带 @ 前缀的 JSON 属性,避免与同名子元素冲突。不过命名空间语义不能完整保留,仍须对照报告检查。

minOccurs 为零时为什么仍被标成必填?

minOccurs 为 0 的单项不会进入 required;若元素可重复,还会转成数组。遇到不一致时查看报告所指的源声明。

XSD 的命名空间能完整保留吗?

XML 命名空间不能原样成为 JSON 的命名空间。报告会标记这种近似;若名称相同或引用依赖命名空间,需要人工调整。

生成的 JSON Schema 能直接验证 XML 吗?

不能。JSON Schema 验证 JSON,XSD 验证 XML。本页只校验生成的模式;要检验 XML 实例请使用 XML / XSD 验证器。

遇到难以理解的诊断?

带着报告使用 XSD 转 JSON Schema

用真实模式运行 XSD 转 JSON Schema,确认根元素,并逐项复核近似或未转换的约束,再接入 API。