XMLツール

XMLからXSDを生成実例からスキーマの下書きへ

2つ目のXML文書を加え、省略可能になる項目を比べてください。

XMLからXSDを生成

XMLサンプル

XSDの草案

サンプルはこのブラウザー内で処理します。ローカルファイルは送信しません。

推定の設定

最大20文書、各100万文字、合計200万文字、深さ100。空の文書は推定に使いません。

結果が古いため書き出せません。

連携先からXMLの実例だけが届き、仕様書がない場合にXMLからXSDを生成すると、観測した構造を整理できます。ただし実例にない分岐まで断定することはできません。

XSD自動生成の結果はすべての入力サンプルで検査します。兄弟要素の順序や名前空間を正しく表せない場合は、もっともらしいスキーマを返さずエラーにします。

XMLからXSDを生成する理由

欠けた項目を実例から見つける

同じルートの2文書で一方だけに項目があれば、XMLからXSDを生成した草案ではminOccurs=0になります。同じ親の下で繰り返す要素にはmaxOccurs=unboundedを付けます。見ていない分岐は推測しません。

2つのXMLツリーが合わさり、片方にない項目が任意として示されている図。

同じ名前でも親ごとに区別

顧客のnameと商品のnameは別の構造を持てます。親の位置ごとに局所宣言を作り、最初の文書だけでなく全入力でスキーマを検査します。

異なる親の下にある同名の子ノードが、それぞれ別の宣言へつながる図。

実例だけでは決められない点を確認

01

完全な文書を追加する

1サンプルにつきXMLのルートは1つです。空の追加欄は無視されます。2つ目の文書があれば、最初の文書では分からない省略可能な子要素や属性を見つけられます。

02

値の読み方を選ぶ

Smartは真偽値、数値、ISO形式の日付を控えめに推定します。001のようなコードを含め常に文字列にしたければStringに変更します。自動生成は400ms待機し、停止後はCtrl/Cmd+Enterで実行できます。

03

草案を点検する

成功はXSD 1.0としてコンパイルでき、入力した各文書が通ることを意味します。minOccurs、maxOccurs、型、xs:sequenceの順序を業務仕様と照合してください。

観測した構造を検査可能な草案に

複数文書をまとめる

XMLスキーマ作成では同じルートの文書を統合します。親が存在しても子が欠ける例は任意となり、同じ親の下で繰り返した子は最大回数を広げます。属性も観測した有無で判断します。

型を控えめに選ぶ

XMLからスキーマ定義を作る際、明らかな真偽値、整数、小数、ISO日付だけを型付けします。空値や形式の衝突、先頭が0の識別子はxs:stringに戻します。

書き出す前に全例を検証

局所宣言で異なる親の同名要素を混同しません。ブラウザーのワーカーがXSDをコンパイルし、すべてのサンプルを通した後に完全な内容をコピーまたは保存できます。

自動推定が届かない範囲

見えた必須と本当の必須は別
すべての例で現れた項目は草案では必須です。欠けた例を観測した場合だけminOccurs=0になります。運用上は任意なら手で修正してください。
業務上の制約は作らない
列挙値、正規表現、範囲、キー、既定値、項目間条件は推定しません。先頭に0がある番号は文字列のままにし、異なる形式が混ざる場合もxs:stringに広げます。
同じルートと単一の名前空間
空でない文書のルート拡張名は同一でなければなりません。別の名前空間、名前空間付きデータ属性、混合内容、矛盾する兄弟順は明示的に拒否します。
ローカルのXML 1.0を処理
貼り付けとローカルUTF-8ファイルに対応します。DOCTYPE、独自エンティティ、XML 1.1、URL取得、外部スキーマの読み込みは行わず、単一のXSD 1.0を出力します。
入力例以外は別に検証
最大20文書、合計200万文字、深さ100です。内蔵検査は入力例だけを対象にします。新しいXMLは別のXSD検証ツールで試し、受信側の業務条件も確認してください。

XMLからXSDを生成するときの疑問

既存のXMLからXSDを生成できますか?

はい。完全なXMLを貼り付けるかローカルファイルを読み込みます。XMLからXSDを生成した後、同じルートの別文書も加えると省略や繰り返しを観測できます。

複数のXMLサンプルから省略可能な要素を判断できますか?

同じ親の例のうち、その子を持たないものがあればminOccurs=0を付けます。全例で存在していても業務上必須とは限りません。

繰り返し要素の出現回数はどう推定されますか?

同じ親の下で同名要素が複数回あればmaxOccurs="unbounded"にします。実例から厳密な上限は分からないので必要なら後で絞ってください。

数値や日付の型は自動で決まりますか?

Smartは分かりやすい値だけ推定します。001など先頭が0のコードは文字列です。識別子を必ず文字列にしたければStringを選びます。

生成したXSDをそのまま仕様として使えますか?

入力した全例は検証しますが、未出現の分岐、列挙値、業務上の範囲は証明できません。別の文書でも試し、契約内容に合わせて編集してください。

推定結果が気になりますか?

XMLからXSDを生成して下書きを作る

XMLからXSDを生成する際は別の代表的な文書も加え、任意項目と繰り返しを確認してから新しい文書で試してください。