簡體   English   中英

如何根據 XML Schema (XSD) 或 RelaxNG 驗證 JSON?

[英]How do I validate JSON against XML Schema (XSD) or RelaxNG?

我正在定義 JSON 文檔的結構。 我想知道如何根據現有的 XSD、RelaxNG 模式或其他標准模式語言模式驗證 JSON 文檔。 我知道 Jsonix,但我沒有看到它使用來自 XSD 或 RelaxNG 的正則表達式來驗證 JSON 模式(我認為 JSON 模式不是標准化的)。

澄清:我們已經有現有的 XML 和 XSD。 我們總是可以回到 XML 進行驗證,但是如果我們可以直接驗證 JSON 會很酷,並且當我們想要使用 JSON 而不是 XML 時會給我們更多的信心。

更新:這是有問題的規范: http : //www.web3d.org/specifications/x3d-3.4.xsd請注意,它在 XML 文檔中沒有文本節點。

初步答案(仍在進行中,但您可以貢獻):如果您想將 XML 模式轉換為 JSON 模式,請嘗試下載: XSD2OWL 樣式表,將 XML 模式轉換為 OWL。 我將我的模式轉換為這樣的貓頭鷹:

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

然后下載owl2jsonschema.js ** NO LICENSE ** 並修改它,直到演示成功。 輸出將在 demo/OUTPUT/schema 文件夾/*.json 中作為單獨的 JSON 文件。

XSD 和 RelaxNG 是針對 XML 而不是 JSON 定義的。

對於 JSON,請參閱JSON Schema ,但意識到它離 XSD 的采用還差得很遠,並且該規范最新草案已於 2013 年 8 月 3 日到期,這使人們對這項工作的未來產生了懷疑。


更新

如何根據 XML Schema (XSD) 或 RelaxNG 驗證 JSON?

你沒有。

問題不是“我可以嗎?” 但是“怎么樣?” 假設我可以完全控制 JSON 文檔。

當回答“我可以嗎?” 是“否”如何不適用的問題。

澄清:我們已經有現有的 XML 和 XSD。 我們總是可以回到 XML 進行驗證,但是如果我們可以直接驗證 JSON 會很酷,並且當我們想要使用 JSON 而不是 XML 時會給我們更多的信心。

您可以直接針對 JSON 架構驗證 JSON,但不能針對 XSD。 沒有任何工具可以做到這一點。 標准大不相同。 定義由 XSD 和 RelaxNG 針對 XML 提供的標准詞匯和語法的需求旨在通過針對 JSON 的 JSON Schema 來滿足。

您正在錯誤的地方尋找“當我們想要使用 JSON 而不是 XML 時的信心”。 查看選擇 XML 與 JSON 的原因

由於您可能已經知道我即將發布的信息,這僅供參考。

Jsonix Schema Compiler支持基於 XML Schema 生成 JSON Schema

因此,您可以將 XML Schema 轉換為 JSON Schema,並使用AJV根據此 JSON Schema 驗證您的 JSON。

這仍然是一個實驗性功能,但這就是方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM