XML / XPath / XSD

XSDからJSONスキーマに変換変換できない規則も見逃さない

XSDを貼り付けるか例を読み込み、ドラフトを選んで対応レポートを確認してください。

XSDからJSONスキーマに変換

XSD入力

JSONスキーマ出力

スキーマはこのブラウザー内で処理され、送信されません。

変換オプション

XML属性には固定の@接頭辞を付けます。

XSDを貼り付けるか例を読み込んでください。

XSDからJSONスキーマに変換する場面は、既存のXML契約をJSON APIに移すときです。入力はXMLの実データではなくスキーマ定義で、出力もサンプルJSONではありません。

XSDをJSONスキーマに変換する前に、複数ある場合は対象のグローバル要素を選びます。XMLスキーマ変換の近似箇所をレポートに残し、同等性を思い込まないようにします。

XSDからJSONスキーマに変換する理由

結果と変換の根拠を一緒に確認できます。

対応と損失を項目ごとに表示

XSDからJSONスキーマに変換すると、要素や属性の元のパスを残します。順序、名前空間、正規表現の違いは近似として示し、未対応の規則も隠しません。

XSDの構造からJSONスキーマと項目別の対応レポートへ分岐する図。

グローバル要素からルートを選択

一つのXSDに複数のグローバル要素がある場合、出力のルートを選べます。選択は参照先に反映され、レポートにも記録されます。

二つのグローバル要素から異なるJSONスキーマのルートを選ぶ図。

出力を使う前に確かめる三点

01

文書のルートを選ぶ

グローバル要素が複数あるときは初回変換後に選択します。既定値は先頭の要素で、変更すると古い結果は無効になります。

02

対象ドラフトを決める

既定は2020-12で、Draft-07も選べます。$schemaと定義のキーがともに変わります。自動変換を止めた場合はCtrl/Cmd+Enterでも実行できます。

03

損失を見てから保存

JSONスキーマ自体の検証に成功してもXSDと同等とは限りません。元のパスごとに近似や未変換を調べ、古い結果はコピーしないでください。

構造の対応とドラフト別の検証

型と再利用できる定義

名前付きの単純型と複合型を定義として再利用します。列挙値、長さ、数値の境界は対応する制約へ変換します。

要素、配列、属性

minOccursから必須かどうかを決め、maxOccursから配列を作ります。属性には@を付け、同名の子要素と区別します。

生成結果を実際に検証

選択したJSONスキーマのドラフトで生成物をコンパイルし、ローカル参照も確認します。失敗時はダウンロードできません。

XMLとJSONで一致しない条件

スキーマと実データは別
ここではXSDの定義をJSONスキーマに変換します。XML実データをJSONにしたり、生成結果でXMLを直接検証したりはしません。
完全な無損失変換ではない
XMLの要素順や属性の名前空間は通常のJSONオブジェクトにそのまま保持できません。近似や未対応はレポートに明記します。
外部のXSDは読み込まない
xs:includeやxs:importなどがあると出力をブロックします。ネットワークから依存ファイルを取得せず、単一ファイルに整理した入力を扱います。
対象はXSD 1.0の一部
XSD 1.1のアサーション、識別制約、混在コンテンツは要確認です。DOCTYPEは拒否し、文字数とノード数にも上限があります。

XSDからJSONスキーマに変換する際の疑問

既存のXSDからJSONスキーマを生成できますか?

既存のXSDを貼り付け、グローバル要素とドラフトを選びます。生成後は対応レポートを確認し、失われた条件を手動で補ってください。

XSDの属性はJSONスキーマでどう表現しますか?

XML属性は@を付けたプロパティとして出力されます。同名の子要素と区別できますが、名前空間の意味は別途確認してください。

繰り返し要素は配列になりますか?

繰り返し要素はitemsを持つ配列になります。minOccursと有限のmaxOccursはminItemsとmaxItemsに対応します。

変換後のスキーマは元のXSDと同等ですか?

いいえ。生成結果がドラフトに適合しても、順序や名前空間などのXSD規則が完全に保たれた証明にはなりません。

参照先のXSDファイルも読み込めますか?

いいえ。xs:includeやxs:importの参照先は自動取得しません。未解決の依存関係はブロックとして報告し、出力を保存できません。

診断について伝えたいことがありますか?

レポート付きでXSDからJSONスキーマに変換

実際のXSDからJSONスキーマに変換し、ルートを指定して、近似と未変換の規則を確認してからAPIで利用してください。