【问题标题】:JSON Schema vs XML SchemaJSON 模式与 XML 模式
【发布时间】:2014-12-01 17:26:59
【问题描述】:

当然,XML 和 JSON 是不同的。但是,如果您在纯结构级别上看到这些格式,它们可能是相同数据的可交换表示。两者都可以用架构定义来描述:JSON 架构和 XML 架构。

您能否使用 JSON Schema 描述与使用 XML Schema 描述的数据结构相同的数据结构,反之亦然? 是否可以编写在转换时不会丢失信息的 JSSD/XSD 转换器?

【问题讨论】:

标签: xml json xsd jsonschema


【解决方案1】:

我很确定答案是肯定的。

使用当前的 JSON Schema 草案 04 (hyperschema),您目前可以将大部分 XML Schema 映射到 JSON Schema。有一些丑陋的变通方法将在草案 05 中过时:我很确定提案 propertyLinks 将“使其”进入下一个草案,请参阅此页面: https://github.com/json-schema/json-schema/wiki/v5-Proposals

也有现有的项目,例如owl2vowl and webowl 正在使用 JSON 模式转换器。它是Java。 我不确定 XML Schema 支持有多远。 然而:

我开始在 javascript 中编写 JSON Schema “playground”(带有可选的“node.js 部分”)。在 javascript 中有一个solution for schema.org。我问自己如何以类似的方式导入 OWL / RDFS / XML Schema。我现在已经准备好 70% 的 OWL / RDFS 部分了。

所以如果你对此感兴趣,我们可以为 XML Schema 部分设置一个讨论,我可以之前推送到 github。

【讨论】:

  • 您有任何将 Json 架构转换为 XSD 的解决方案吗?我在其中挣扎。
【解决方案2】:

我很确定答案是否定的。

首先,即使在您开始考虑模式之前,也很难在实例级别定义 JSON 和 XML 之间的完全无损映射。所以“相同数据结构”的概念需要限定。

XML Schema 的大部分内容都与语法和内容模型有关,例如说一个部分由一个可选标题和零个或多个段落组成,每个段落可以是 p、ul 或 table 元素。我认为 JSON Schema 中没有任何类似的东西。 JSON Schema 中的数组似乎被视为统一和同质的。

【讨论】:

  • 我不确定你的前提是否正确。 XML 只不过是一种树状结构,JSON 也是如此。 XML 中唯一不存在于 JSON 中的是名称空间和属性规范。两者都可以映射到 JSON(例如,使用限定符来表示属性,如 $attribute 以及字符串而不是命名空间表示法,如 "p-parameter": CONTENT 而不是 <p:parameter> CONTENT </p:parameter>)。当谈到模式描述时,它可能是另一回事,因为在这里我们看不到结构,而是语义。
  • 我觉得讽刺的是,JavaScript 产生了类型安全的变体(例如 TypeScript),而现在,终于出现了 JSON 模式来解决序列化/反序列化问题,其中“语法”、域完整性和类型安全有所作为。我们都同意,未经严格模式验证的 XML 文档很容易被精简(非胖)JSON 文档取代。模式断言“1”是数字(浮点数或整数)还是字符串;在某些情况下,了解这一点很重要。
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 2016-03-09
  • 2011-04-24
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多