JSON Schema和XML Schema的区别

4
当然,XML和JSON是不同的。但是,如果你把它们看作纯结构层面上的格式,它们可能成为相同数据的可交换表示。两者均可以用模式定义来描述:JSON Schema和XML Schema。
你能用JSON Schema描述与XML Schema描述相同的数据结构吗?反之亦然。是否有可能编写JSSD / XSD转换器,在转换过程中不丢失信息?

我现在把提到的项目提交到了Github上:https://github.com/redaktor/owl2jsonschema.js。目前,XML模式转换只是一个小的子部分,但我正在研究xsd约束。这个文件可能特别有兴趣:https://github.com/redaktor/owl2jsonschema.js/blob/master/lib/hardcoded-schemas.json,它包含预定义的xsd数据类型。 - sebilasse
我编写了一个将XML模式转换为JSON模式的工具,请查看此答案:https://dev59.com/S2865IYBdhLWcg3wOb9h#30006975 - lexicore
2个回答

3

我相信答案很快就会是肯定的。

使用当前的JSON Schema草案04(超媒体),您可以将大部分XML Schema映射到JSON Schema。有一些丑陋的解决方法,在草案05中将过时:我非常确定提议propertyLinks将被纳入下一个草案,参见此页面: https://github.com/json-schema/json-schema/wiki/v5-Proposals

还有现有的项目,例如owl2vowl和webowl正在使用转换为JSON Schema的工具。它是Java编写的。 我不确定XML Schema支持到什么程度。 然而:

我开始用javascript编写JSON Schema“游乐场”(可选的'node.js部分')。在javascript中,有一个schema.org的解决方案。我想知道如何以类似的方式导入OWL / RDFS / XML Schema。现在我完成了70%的OWL / RDFS部分。

因此,如果您对此感兴趣,我们可以为XML Schema部分设置讨论,并且我可以在github上推送。


你有没有将Json模式转换为XSD的解决方案?我在这方面很困扰。 - feikiss

2
我很确定答案是否定的。
首先,在开始考虑模式之前,完全定义JSON和XML之间的无损映射相当困难。因此,“相同的数据结构”这个概念需要限定。
XML Schema的许多内容都涉及语法和内容模型,例如指出一个部分由一个可选标题和零个或多个段落组成,每个段落可以是p、ul或table元素。我认为在JSON Schema中没有任何类似的东西。JSON Schema中的数组似乎被视为统一和同质化的。

3
我对你提出的前提正确性不确定。XML与JSON都是树状结构,唯一在XML中而不在JSON中的是命名空间和属性规范。但两者都可以映射到JSON(例如,使用属性限定符如$attribute以及字符串代替命名空间标记,例如"p-parameter": CONTENT而不是<p:parameter> CONTENT </p:parameter>)。当涉及架构描述时可能会有所不同,因为这里我们看到的不是结构,而是语义。 - Sebastian Barth
2
我觉得很讽刺的是,JavaScript正在崛起出现类型安全的变体(例如TypeScript),而现在终于出现了JSON模式来解决序列化/反序列化问题,其中“语法”、域完整性和类型安全都有所不同。我们都认为,一个未经严格模式验证的XML文档可以轻松地被一个精简(不臃肿)的JSON文档替代。模式断言一个“1”是一个数字(浮点或整数)还是一个字符串;在某些情况下,这是很重要的。 - subsci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接