我定义了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文件。
答案 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。
这仍然是一个实验性功能,但这是方向。