从 Proto 转换为 XSD

Posted

技术标签:

【中文标题】从 Proto 转换为 XSD【英文标题】:Convert from Proto to XSD 【发布时间】:2014-07-17 17:18:50 【问题描述】:

我需要能够从proto转换到xsd,我知道有一些工具可以从XSD转换到PROTO,但是我需要反对。

可以在 .NET 或 Java 中

谢谢

【问题讨论】:

如果你愿意,我可能分两步完成 - 不理想,但可行...通过 c# (protogen) 然后 xsd.exe 在编译的 DTO 模型上 【参考方案1】:

您最终没有指定要接收的 XSD 示例。实际上,有多种方式可以在 XSD 中表示 Protobuf 消息。

可能会出现一些问题:

您希望如何存储 PROTO 字段:作为属性或元素(对于像 string/bool/int 这样的简单类型)? 您是否希望有固定的 XML 元素顺序? (换句话说,您想在您的xs:complexType 定义中使用xs:sequencexs:all 吗?)

到目前为止,我也遇到了同样的问题。我解决了我的任务并描述了它in blog post。

我的任务的解决方案是:

使用protogen.exe 将PROTO 序列化为XML 表示 然后运行自定义编写的 XSLT 以生成 XSD 架构

其实I wrote XSLT为protogen.exe生成XSD。使用它,this PROTO 将转换为this XSD。

您可以根据需要自定义此 XSLT。希望这会有所帮助!

【讨论】:

我关注了您的博文,这对我很有帮助。不幸的是,我对 XSLT 不太熟悉,需要 1) 将 proto 字段编写为元素,以及 2) 使用 xs:sequence 而不是 xs:all。请问您能帮忙吗? @hshah,试试这个 xslt,希望它能做你想做的事:github.com/halex2005/protobuf-to-xsd/blob/master/xsd.xslt【参考方案2】:

我不得不分别使用Proto to JSON 转换工具和JSON to XSD 转换工具来解决不同的问题。可能对你的情况有所帮助..

【讨论】:

Protomak 不是用其他东西制作 .proto 吗?

以上是关于从 Proto 转换为 XSD的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将 JSON Schema 转换为 XSD? [关闭]

将XSD转换为.cs类

来自 xsd 的 XSL 转换

根据给定的XSD将XML文件转换为另一个

获得预期的***语句(例如“消息”)。同时将 proto 转换为 C#

如何从 CLASSPATH 中引用 XSD 来验证我的 XML?