DTD ファイルから XML スキーマを生成すると、
ユーザーの DTD ファイルに含まれていた要素と属性を自動的に取り込んだ XML スキーマを作成できるようになります。
このため、DTD ファイルに既にセットアップ済みの規則を使用しながら、
DTD ファイルでなく XML スキーマを使用して XML ファイルの検証を行いたい場合に、時間を節約できます。
このタスクについて
次の説明は Resource パースペクティブを対象にしていますが、他のさまざまなパースペクティブでも使用できます。
DTD ファイルから XML スキーマ・ファイルを生成するには、以下のステップに従います。
- 「ナビゲーター」ビューで、DTD を右クリックして、をクリックする。
- スキーマを含めるプロジェクトまたはフォルダーを選択する。
- デフォルトの名前を受け入れるか、または新規に入力して「次へ」をクリックする。
- DTD ファイルとそれが参照するすべての DTD ファイルを保有する XML スキーマを
作成する場合は、「すべての DTD ファイルを保有する XML スキーマを 1 つ
作成する (Create one XML schema that includes all the DTD files)」ラジオ・ボタンを
クリックする。
- それに対し、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 を持ちます。
- 「終了」をクリックします。
タスクの結果
ナビゲーター・ビューにスキーマが表示されます。
これらの
スキーマの名前は、生成元の 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 です。