[英]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.