[解決済み] XMLスキーマ(XSD)からJsonスキーマを生成する【非公開
質問
を生成する方法をご存知の方はいらっしゃいますか? JSON スキーマ を既存の XML スキーマ (XSD ファイル) から生成する方法を知っていますか? このために利用できるツールはあるのでしょうか?
どのように解決するのですか?
免責事項 : の著者です。 Jsonix は、強力なオープンソースの XML<->JSON JavaScript マッピングライブラリです。
今日、私は新しいバージョンの Jsonix スキーマ コンパイラ を、新しい JSON スキーマ生成 という機能があります。
それでは 購入注文 スキーマを例にとってみましょう。以下はその断片です。
<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="USAddress"/>
<xsd:element name="billTo" type="USAddress"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="items" type="Items"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
このスキーマは提供されたコマンドラインツールを使ってコンパイルすることができます。
java -jar jsonix-schema-compiler-full.jar
-generateJsonSchema
-p PO
schemas/purchaseorder.xsd
コンパイラが生成する Jsonix マッピング と同様に マッチングJSONスキーマ .
結果はこんな感じです(簡潔にするために編集しています)。
{
"id":"PurchaseOrder.jsonschema#",
"definitions":{
"PurchaseOrderType":{
"type":"object",
"title":"PurchaseOrderType",
"properties":{
"shipTo":{
"title":"shipTo",
"allOf":[
{
"$ref":"#/definitions/USAddress"
}
]
},
"billTo":{
"title":"billTo",
"allOf":[
{
"$ref":"#/definitions/USAddress"
}
]
}, ...
}
},
"USAddress":{ ... }, ...
},
"anyOf":[
{
"type":"object",
"properties":{
"name":{
"$ref":"http://www.jsonix.org/jsonschemas/w3c/2001/XMLSchema.jsonschema#/definitions/QName"
},
"value":{
"$ref":"#/definitions/PurchaseOrderType"
}
},
"elementName":{
"localPart":"purchaseOrder",
"namespaceURI":""
}
}
]
}
さて、このJSON Schemaは元のXML Schemaから派生したものです。正確に1:1変換ではありませんが、非常に近いものです。
生成されたJSON Schemaは、生成されたJsonixのマッピングと一致します。したがって、XML<->JSONの変換にJsonixを使用している場合、生成されたJSON SchemaでJSONの検証を行うことができるようになるはずです。また、生成されたJSON Schemaには、元のXML Schemaから必要なすべてのメタデータ(要素、属性、型名など)が含まれています。
免責事項です。 現時点では、これは新しく、実験的な機能です。特定の既知の の制限と不足している機能があります。 . しかし、私は、これが非常に速く現れ、成熟することを期待しています。
リンク集です。
-
NPMの購買発注プロジェクトのデモ
- をチェックアウトして
npm install
- ドキュメンテーション
- 現在のリリース
- npmjs.com上のJsonixスキーマコンパイラ
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み] 正しい」JSONの日付形式とは?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] XMLでは、要素と属性のどちらを使うべきですか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XMLを用いたカスタムandroid UI要素の宣言
-
[解決済み] cURL コマンドラインを使用して XML ファイルを POST
-
[解決済み] foo "を含む属性を選択するための正しいXPathは何ですか?
-
[解決済み] T-SQLでXML文字列の属性にある二重引用符をエスケープするにはどうすればよいですか?
-
[解決済み] XML インスタンスドキュメントから XSD スキーマを生成するためのツールはありますか?[クローズド]。
-
[解決済み] SVG テキストの自動改行
-
[解決済み] 要素名の大文字・小文字の区別は?
-
[解決済み] XML の二重引用符のエスケープ
-
[解決済み] Visual Studio IDE における XSD を用いた XML 検証
-
[解決済み] XPathでリンクテキストからリンクURLを見つけるには?