ZH
我的工具

XSD 生成器(XML 转 XML Schema)

根据一个或多个 XML 示例生成 XML Schema(XSD):元素结构、minOccurs/maxOccurs、必需属性以及推断出的简单类型,一次生成。

关闭后,所有值都是 xs:string。
XSD
示例数
1
根元素
catalog

根据示例推断出的 schema 只了解示例中出现的内容。请检查 minOccurs、必需属性和类型;如果数据有规则,请补充枚举、模式或取值范围。

我的工具 →
广告

XML Schema(XSD)规定了 XML 文档可以包含哪些元素和属性、出现多少次、按什么顺序以及是什么类型。校验工具、代码生成器和对接方往往都会要求提供 XSD,但从零开始写很费时间。粘贴一个或多个示例文档,就能得到 XSD 初稿:包含元素与嵌套、顺序、根据示例得出的 minOccurs 和 maxOccurs、必需与可选属性,以及根据值推断出的简单类型。可以选择嵌套式(俄罗斯套娃)或命名类型式(威尼斯百叶窗)设计。

使用方法

  1. 粘贴一个示例文档;如需体现可选和重复的部分,可粘贴多个,并用只含 --- 的一行分隔。
  2. 选择俄罗斯套娃(一个嵌套声明)或威尼斯百叶窗(可复用的命名复杂类型)。
  3. 决定是推断简单类型,还是一律保留为 xs:string。
  4. 复制 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 在浏览器中生成。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). XSD 生成器(XML 转 XML Schema). https://kakao.mobile/zh/tools/xsd-generator/

MLA

“XSD 生成器(XML 转 XML Schema).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/xsd-generator/.

广告