DTD ファイル から XML スキーマを生成する

DTD ファイルから XML スキーマを生成すると、 ユーザーの DTD ファイルに含まれていた要素と属性を自動的に取り込んだ XML スキーマを作成できるようになります。 このため、DTD ファイルに既にセットアップ済みの規則を使用しながら、 DTD ファイルでなく XML スキーマを使用して XML ファイルの検証を行いたい場合に、時間を節約できます。

次の説明は Resource パースペクティブを対象にしていますが、他のさまざまなパースペクティブでも使用できます。

DTD ファイルから XML スキーマ・ファイルを生成するには、以下のステップに従います。

  1. 「ナビゲーター」ビューで、DTD を右クリックして、「生成」 > 「XML スキーマ」をクリックする。
  2. スキーマを含めるプロジェクトまたはフォルダーを選択する。
  3. デフォルトの名前を受け入れるか、または新規に入力して「次へ」をクリックする。
  4. DTD ファイルとそれが参照するすべての DTD ファイルを保有する XML スキーマを 作成する場合は、「すべての DTD ファイルを保有する XML スキーマを 1 つ 作成する (Create one XML schema that includes all the DTD files)」ラジオ・ボタンを クリックする。
  5. それに対し、DTD ファイルとそれが参照する個々の DTD ファイルごとに個別のスキーマを作成する場合には、 「DTD ファイルごとに XML スキーマを作成する (Create an XML schema for each DTD file)」 ラジオ・ボタンをクリックする。 このオプションを選択すると、各 XML スキーマは、その生成元である DTD と同じ名前を持ちます。 たとえば、ユーザーの DTD が Greetings.dtd と呼ばれていて、それが Hello.dtd および Goodbye.dtd, を参照すると、ユーザーは Greetings.dtd から生成されたスキーマ (ユーザーが指定した名前付きの) ともう 2 つのスキーマ Hello.xsd および Goodbye.xsd を持ちます。
  6. 「終了」をクリックします。

ナビゲーター・ビューにスキーマが表示されます。 これらの スキーマの名前は、生成元の DTD ファイルと同じです (XML スキーマの生成時に「ファイル 名 (File name)」フィールドのデフォルト値を受け入れた場合)。

DTD ファイルにあったエンティティーは、XML スキーマにはありません (エンティティーとしては XML スキーマではサポートされていません)。ただし、エンティティーを参照したすべての要素または属性は、その値を XML スキーマへ繰り越します。

たとえば、「Legal」という名の DTD を持っていて、それに「Copyright」という名の エンティティーが含まれているとします。 そのエンティティーの値は「Copyright 2004. MyCompany Publishing」です。 DTD には、 エンティティー Copyright を参照する「MyCopyright」という名の要素があります。 XML スキーマ作成後、Copyright エンティティーは XML スキーマ内に表示されませんが、 その値は繰り越されます (つまり、MyCopyright は Copyright 2004. MyCompany Publishing の値を持ちます)。

DTD ファイルに存在したすべての要素および属性は、XML スキーマ・ファイルに存在することになります。

(#PCDATA) のコンテンツ・モデル (属性なし) を持つ DTD 内の要素は、 XML スキーマ・エディター内で空と表示されます。 これらは、string の「組み込み 単純タイプ (Built-in simple types)」を持っているとマークされます。 つまり、「#PCDATA」の値を持つ DTD 要素は、 XML スキーマのプリミティブ・タイプ string を持つ XML スキーマ要素へマップします。

注: ヘブライ語またはアラビア語の要素を含む DTD ファイルから XML スキーマを生成すると、 特定の要素名が等価の 16 進数のヘブライ語およびアラビア語のエンコード値でエンコードされる場合があります。 この問題を避けるために、生成を実行する前に、DTD または XML スキーマ・ファイルの元のエンコード属性を UTF-8 に変更してください。つまり、次の XML 宣言を行ってください。<?xml version="1.0" encoding="UTF-8"?> 影響を受けるエンコード値のリストは、ISO-8859-8-I、ISO-8859-8、Windows-1256、および ISO-8859-6 です。
関連タスク
DTD の作成

フィードバック