按 ⌘K 切换工具
FORMAT & CONVERT
XML → XSD架构生成器
从XML生成XSD架构定义。
xml-xsd
A best-effort schema inferred from one sample. Types default to xs:string.
§01 关于此工具
概述
粘贴一份 XML 文档,得到一份可以当起点用的 XSD(XML Schema Definition)。生成器会遍历
元素树,为每个元素名建立一个 xs:complexType,把子元素列进 xs:sequence,
把属性声明为 xs:string,并给同一父节点下重复出现的子元素标上
maxOccurs="unbounded"。当你接手一个没有架构的 XML 数据源,
而校验或代码生成总得有个起点时,这个工具很有用。
手写 XSD 的成本主要不在语法,而在把一份文档的结构完整地誊一遍; 这个工具替你做掉的正是这部分抄写。
使用方法
- 把文档粘贴到 XML 区域。
- 从 XSD (inferred) 输出读取生成的架构——每次按键都会重新生成。
- 如果输入不是格式良好的 XML,这里会显示
Invalid XML错误。
示例
<books><book id="1"><title>A</title></book></books>会生成一份包含booksType和bookType两个复杂类型的架构,其中title元素类型为xs:string,id属性也声明为xs:string。
说明
同名元素被假定共用一个类型,命名空间不做分析。请把输出当作脚手架:
对着你真实的契约收紧数据类型、出现次数约束和枚举值。也就是说,
合理的用法是先生成骨架,再逐个把 xs:string 换成真实类型,
并给可能缺席的元素补上出现次数约束。
FAQ
我的 XML 会被发送到服务器吗?
不会。文档用浏览器内置的 DOMParser 解析,架构在本地生成,不上传任何内容,因此私有报文可以放心粘贴。
推断出的架构有多准确?
这是从一份样本尽力推断出的结构:元素名和属性名会被捕获,重复出现的子元素会得到 maxOccurs="unbounded",但所有叶子节点和属性的类型都默认为 xs:string。类型和约束需要你手工细化。
生成的 XSD 能识别可选元素吗?
不能。只有一份样本时没有办法区分必需和可选,所以观察到的每个元素都会出现在 sequence 里。可能缺席的元素,请自己补上 minOccurs="0"。