XSD 生成器(XML 转 XML Schema)
根据一个或多个 XML 示例生成 XML Schema(XSD):元素结构、minOccurs/maxOccurs、必需属性以及推断出的简单类型,一次生成。
根据示例推断出的 schema 只了解示例中出现的内容。请检查 minOccurs、必需属性和类型;如果数据有规则,请补充枚举、模式或取值范围。
XML Schema(XSD)规定了 XML 文档可以包含哪些元素和属性、出现多少次、按什么顺序以及是什么类型。校验工具、代码生成器和对接方往往都会要求提供 XSD,但从零开始写很费时间。粘贴一个或多个示例文档,就能得到 XSD 初稿:包含元素与嵌套、顺序、根据示例得出的 minOccurs 和 maxOccurs、必需与可选属性,以及根据值推断出的简单类型。可以选择嵌套式(俄罗斯套娃)或命名类型式(威尼斯百叶窗)设计。
使用方法
- 粘贴一个示例文档;如需体现可选和重复的部分,可粘贴多个,并用只含 --- 的一行分隔。
- 选择俄罗斯套娃(一个嵌套声明)或威尼斯百叶窗(可复用的命名复杂类型)。
- 决定是推断简单类型,还是一律保留为 xs:string。
- 复制 XSD,再手动补充枚举、模式、长度和取值范围等约束。
计算公式
元素出现在每个父元素中 → minOccurs 1 · 某处缺失 → minOccurs="0" · 在一个父元素中出现多次 → maxOccurs="unbounded" · 每个元素都有该属性 → use="required"
简单类型:true/false 为 xs:boolean,整数为 xs:integer,小数为 xs:decimal,真实存在的 ISO 8601 日期或日期时间为 xs:date 和 xs:dateTime,其他一律为 xs:string(值有时为空时也是 xs:string)。同时含属性和文本的元素使用 simpleContent;始终为空的元素会得到一个空的 complexType。如果子元素顺序不一致,则使用 xs:all(有重复时使用 unbounded xs:choice)。根元素的命名空间会成为 targetNamespace。
示例
示例 catalog 会生成 <xs:element name="catalog">,其中包含 maxOccurs="unbounded" 的 book。每个 book 有必需的 id 属性和可选的 lang 属性;title 是 xs:string;price 使用 simpleContent,base 为 xs:decimal,并带有必需的 currency 属性;published 只出现在第一个 book 中,所以是 minOccurs="0" 的 xs:date;tag 是 minOccurs="0"、maxOccurs="unbounded" 的 xs:string。
常见问题
生成的 schema 可以直接用吗?
不可以。它描述的是你的示例,而不是你的业务规则。恰好在示例中处处出现的字段会变成必填,值的类型也只会取示例允许的最通用类型。交给对接方之前请务必检查。
俄罗斯套娃和威尼斯百叶窗选哪个?
俄罗斯套娃把每个声明嵌套在父元素内,简洁易读。威尼斯百叶窗给每个复杂类型起名字,便于复用和扩展,更适合较大的 schema 和代码生成器。
能在这里用 XSD 校验 XML 吗?
暂时不能。本站通过 XML 校验器检查格式是否良好。XSD 校验请使用 xmllint --schema、IDE 或你所用平台自带的校验器。
我的 XML 会被上传吗?
不会。schema 在浏览器中生成。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/xsd-generator/
引用此工具
kakaoCalc. (2026, November 8). XSD 生成器(XML 转 XML Schema). https://kakao.mobile/zh/tools/xsd-generator/
“XSD 生成器(XML 转 XML Schema).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/xsd-generator/.