如何针对XML Schema(XSD)或RelaxNG验证JSON?

时间:2015-10-31 19:11:11

标签: json xml xsd relaxng

我定义了JSON文档的结构。我想知道如何根据现有的XSD,RelaxNG模式或其他标准模式语言模式验证JSON文档。我知道Jsonix,但我没有看到它使用XSD或RelaxNG的正则表达式来验证JSON模式(我不认为JSON模式是标准化的)。

澄清:我们已经有了现有的XML和XSD。我们总是可以回到XML进行验证,但是如果我们可以直接验证JSON会很酷,并且当我们想要使用JSON而不是XML时会给我们更多信心。

更新:以下是相关规范:Stream.CanSeek == true请注意,它在XML文档中没有文本节点。

初步答案(仍在进行中,但您可以参与): 如果要将XML模式转换为JSON模式,请尝试下载:http://www.web3d.org/specifications/x3d-3.4.xsd将XML模式转换为OWL。我将我的架构转换为像这样的owl:

    $ xmlsh
    $ xslt -f xsd2owl.xsl -cf file.xsd > file.owl
    $ exit

然后下载XSD2OWL stylesheet ** NO LICENSE **并修改它直到演示工作。输出将在demo / OUTPUT / schema文件夹/ * .json中作为单独的JSON文件。

2 个答案:

答案 0 :(得分:2)

XSD和RelaxNG是针对XML定义的,而不是JSON。

对于JSON,请参阅JSON Schema,但要意识到它已经远未采用XSD,并且latest draft of the specification已于2013年8月3日到期,因此对这项工作的未来产生怀疑。

更新

  

如何针对XML Schema(XSD)或RelaxNG验证JSON?

你没有。

  

问题不是"我可以吗?"但是"怎么样?"说我完全可以控制   JSON文档。

当答案是"我可以吗?"是"不"如何不适用的问题。

  

澄清:我们已经有了现有的XML和XSD。我们总能去   回到XML进行验证,但如果我们可以验证它会很酷   直接使用JSON,在我们想要的时候会给我们更多的信心   使用JSON而不是XML。

您可以直接针对JSON架构验证JSON,但不能针对XSD验证JSON。没有工具可以做到这一点;标准大不相同。需要定义XSD和RelaxNG针对XML提供的标准词汇表和语法,这是JSON Schema针对JSON实现的。

当我们想要使用JSON而非XML "时,您正在寻找" 信心。在错误的地方。请改为reasons for choosing XML vs JSON

答案 1 :(得分:0)

由于您可能已经知道我即将发布的信息,因此仅供参考。

Jsonix Schema Compiler支持generation of JSON Schema based on the XML Schema

因此,您可以将XML Schema转换为JSON Schema,并使用AJV针对此JSON Schema验证您的JSON。

这仍然是一个实验性功能,但这是方向。