XML → XSD 生成

サンプル XML から XSD の下書きを生成します。すべての出現を 1 つの宣言にまとめて属性と単純な値の型を推測し、外部の名前空間や出現順が一定でない子要素は検出結果に表示されます。使用前にスキーマを確認してください。

ブラウザ内でローカルに実行
ローカル処理 ·

サンプル XML から XSD の下書きを生成する手順

代表的な XML ドキュメントを貼り付けるか「例を読み込む」で小さなカタログ例を呼び出し、「XSD を生成」を押します。ツールは各要素のすべての出現を 1 つの宣言にまとめ、inferred-schema.xsd としてコピーまたはダウンロードできる出発点のスキーマを返します。

解析はブラウザーの XML パーサーが行うため、整形式の XML だけが出力を生みます。処理はすべてページ内で完結し、アップロードも検証サービスも、このサイトへのリクエストも発生しません。

  1. 「XML ドキュメント」欄に XML を貼り付けるか、「例を読み込む」で確認済みのサンプルから始めます。
  2. 「XSD を生成」を押します。整形式でない XML では実行が止まり、ステータス行と検出結果に最初の解析エラーの行と列が表示されます。
  3. 出力の上の指標(推論した要素宣言の数、入力行数、生成したスキーマのサイズ、確認メモの件数)を読みます。
  4. 検出結果を読みます。子要素の出現順が一定でない場合、複数の名前空間を使っている場合、名前空間付き属性がある場合にメモが表示されます。
  5. 「コピー」または「ダウンロード」で inferred-schema.xsd を取得し、「クリア」で次のドキュメントの前に編集欄を空にします。

推論が行うこと — そして行わないこと

型と出現回数

値の型はサンプルのテキストに従います。リテラル true と false は xs:boolean に、42、0、1、-7、007 のような符号付き整数は xs:integer に、3.5、.5、5. は xs:decimal に、2026-08-29 と 2026-08-29T10:00:00Z は xs:date と xs:dateTime になります。それ以外 — 0x1F、1e3、TRUE — は xs:string のままです。これらの表記は上記 XSD 型の字句空間に含まれないためです。

出現回数は実際の出現に従います。1 つの要素内で繰り返す子には maxOccurs="unbounded" が付き、親の少なくとも 1 つの出現で欠けている子には minOccurs="0" が付きます。出現は抽出ではなく統合されるため、属性や子を追加する 2 つ目の tool 要素は宣言を広げ、ある場所では空で別の場所では内容がある要素は省略可能のままになります。

内容モデル自体を変える形が 2 つあります。子要素の前後にテキストがある場合は complexType mixed="true" になり、item、note、item のように出現順が一定でない子は sequence ではなく xs:choice maxOccurs="unbounded" になります。sequence では生成元のサンプル自体を拒否してしまうためです。

名前空間と属性

ルート要素が名前空間を持つ場合、それが elementFormDefault="qualified" とともに生成スキーマの targetNamespace になり、サンプルの名前空間がそのまま保たれます。xmlns 宣言そのものが属性になることはありません。

別の名前空間の要素は同じ XSD ドキュメント内で名前を付けて宣言できません。外部名前空間ごとに processContents="lax" の xs:any ワイルドカード 1 つとして出力するためサンプルは引き続き検証でき、その妥協点は検出結果に記録されます。xml:lang や xsi:type のような名前空間付き属性も名前では宣言できず、xs:anyAttribute で受け入れます。

名前空間のない属性は、名前空間なし・省略可能として、要素テキストと同じ型の規則で宣言されます。属性もすべての出現が子要素と同じように統合されます。

下書きが行わないこと

生成したスキーマをあなたの XML に対して検証することは、このページにはできません。ブラウザーに XSD バリデーターはありません。ファイルは XSD 1.0 プロセッサ(例: xmllint --schema、lxml、Saxon)でコンパイルと検証を行い、サンプルは回帰テストとして残してください。1 つの文書を受け入れるスキーマが次の文書には狭すぎることもあります。ここでは省略可能だった要素や、日付にしか見えなかった値がそれにあたります。

記述されるのはサンプルだけです。制約(xs:key、xs:unique、xs:length、パターン)、コメント、他の名前空間の import は推論も創作もされません。必要な箇所には手で追加してください。出現回数はこの文書の読み取りであって仕様ではありません。本番トラフィックで子が必ず現れることを示すものではありません。

最近使ったツール: