DTD および XML スキーマと XML ファイルの関連付け

XML ファイルが DTD または XML スキーマと関連付けられるとき、DTD または XML スキーマ・ファイル内に含まれるなんらかの構造上の規則に束縛されます。 XML ファイルが有効である条件として、ある文書が DTD または XML スキーマに付随し、そして DTD または XML スキーマのすべての宣言に適合している必要があります。

XML ファイルを DTD または XML スキーマと関連付けるには、2 つの異なる方法があります。

  1. 直接的関連付け - XML ファイルは、DTD 内の doctype 宣言による DTD 名 (たとえば、<!DOCTYPE root-element SYSTEM " dtdfile.dtddtdfile.dtd は DTD ファイル名)、 または XML ファイルのルート・エレメントの schemaLocation 属性にある XML スキーマのパス (たとえば、<xsi:schemaLocation="http://www.ibm.com schema.xsd">。ここで schema.xsd は XML スキーマ名) のいずれかを含みます。
  2. XML カタログ項目  - DTD および XML スキーマ・ファイルを XML カタログに登録して、 DTD および XML スキーマ・ファイルを表すキー にこれらを関連付けることができます。これによって、DTD または XML スキーマ・ファイルを直接参照する代わりに、 DTD または XML スキーマ・ファイルのキー を XML ファイルから参照できます。 XML カタログ項目には、2 つのパーツ、すなわちキー (DTD または XML スキーマを表す)および URI (DTD または XML スキーマのロケーションに関する情報を含んでいる) が含まれます。

関連付けの機能 

XML ファイルと DTD との関連付け
XML ファイルが DTD と関連付けられている場合、下記のような DOCTYPE タグが XML ファイルに含まれています。
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:¥mydtds¥Invoice.dtd">

InvoiceId」は DTD ファイルのパブリック ID です。この ID は、XML ファイルを DTD ファイルに関連付けるために使用します (この場合、 DTD ファイルは Invoice.dtd)。もし、パブリック ID、InvoiceId が Invoice.dtd 用の「XML カタログ入力」の「キー (Key)」に対応しているならば、「XML カタログ入力」の「URI」(Invoice.dtd のロケーションに関する情報を含んでいる) は DTD の場所の探索に使用されます。さもなければ、DTD のファイル・システム・ロケーションを直接参照する DOCTYPE のシステム ID ( "C:¥mydtds¥Invoice.dtd") は、 DTD の場所の探索に使用されます。 

: システム ID を XML カタログ項目のキーとして使用することもできます。 システム ID をキーとして使用すると、 以下に示すような DOCTYPE タグが XML ファイルにインクルードされます。

<!DOCTYPE Root-name SYSTEM "MyDTD.dtd"> 

ここで、MyDTD.dtd は XML カタログ項目のキーに対応するシステム ID です。

XML ファイルと XML スキーマとの関連付け

XML ファイルが XML スキーマと関連付けられている場合には、 1 つまたは複数のスキーマ・ロケーション属性が XML ファイルに含まれています。 schemaLocation 内の情報は、XML プロセッサーへの「ヒント」として提供されます。以下の例は、schemaLocation 属性を示しています。

例 1
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com C:¥myschemas¥PurchaseOrder.xsd">
<shipTo country="US"> 
...
例 2
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com PO.xsd">
<shipTo country="US"> 
....

例 1 では、schemaLocation 'hint' ('C:¥myschemas¥PurchaseOrder.xsd') は、 ファイル・システム・ロケーションまたは XML スキーマの URI を、直接参照します。この場合、スキーマ・ファイルは XML プロセッサーによって直接配置されます。

例 2 では、schemaLocation 'hint' ('PO.xsd') は XML カタログ項目を参照します。PO.xsd は、「PurchaseOrder.xsd」のための XML カタログ項目の 「キー (Key)」に対応し、 XML カタログ項目の URI (PurchaseOrder.xsd のロケーションに関する情報を含んでいる) が XML スキーマの検索に使用されます。

どちらの例でも、xsi:schemaLocation タグ内の http://www.ibm.com は、 XML スキーマのネーム・スペースを識別する URI です。 

XML カタログ記入項目には、キーとしてネーム・スペースを使用することもできます。ネーム・スペースをキーとして使用すると、以下に示すような schemaLocation タグが XML ファイルにインクルードされます。
<purchaseOrder xmlns:="www.ibm.com" 
 xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

schemaLocation 属性は、キーおよびスキーマの実際のロケーションの両方を指します。

DTD または XML スキーマはリモート・サーバーに常駐する

検証およびコンテンツ・アシストなどの XML エディターのいくつかの機能には、 DTD または XML スキーマが利用可能になっていなければならないものがあります。製品の文書に、DTD または XML スキーマがローカル・マシンに常駐する場合の使用法の説明があります。ただし、多くの場合、DTD または XML スキーマは、次の例のようにリモート・サーバーに常駐することができます。

<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">

通常は、DTD または XML スキーマはリモート・サーバーから検索できるため、これで問題はありません。 ただし、ユーザーのマシンがファイアウォールの背後にあり、SOCKSified システムを持っていない場合、ワークベンチでは現在、ユーザーが DTD または XML スキーマを検索するための Socks サーバーを指定する方法を提供していません。 ユーザーのシステムを Socks 化できない場合は、 DTD または XML スキーマのコピーを検索 (たとえば、Web ブラウザーを使用) して、 そのコピーをユーザーのローカル・マシンに保管することが、この問題への次善策となります。これによって、ローカル・コピーを、XML ファイルと同じプロジェクト内に配置するか、または XML カタログを使用してパブリック ID を DTD の (ローカルの) ロケーションと関連付けることができます。

: ネットワーク内のいずれかの場所に存在する XML スキーマまたは DTD と関連付けられた XML ファイルがあり、ユーザーがネットワークから切り離されたマシン上で作業する場合に、コンテンツ・アシストの使用または XML ファイルの検証を行うには、 上記のステップを実行します。

XML カタログ項目の関連付けの利点

XML ファイルと、XML スキーマまたは DTD ファイル間に直接的な関連を作成する場合には、 スキーマまたは DTD のロケーションを変更するごとに、参照を行うすべての XML ファイルをトラッキングして、 DTD またはスキーマの新規ロケーションで更新する必要があります。ただし、XML ファイルを XML スキーマまたは DTD のキーと関連付けると、 そのスキーマまたは DTD のロケーションを変更する際に必要となるのは XML カタログ項目の更新のみで、 それぞれの XML ファイルを更新する必要はありません。 

たとえば、 5 つの XML ファイルと関連付けられた Building.dtd という名前の DTD ファイルがあるとします。 XML ファイルの名前は、Office.xml、House.xml、Apartment.xml、Bank.xml、および PostOffice.xml です。 DTD ファイル Building.dtd を新規ロケーションに移動します。Building.dtd とすべての XML の間に指示関連がある場合、それぞれの XML ファイルの <DOCTTYPE> 宣言を更新して、Building.dtd の新規ロケーションを反映させる必要があります。ただし、XML カタログの関連があり、すべての XML ファイルが Building.dtd のキーを参照しているだけの場合には、 その URI を更新するだけですべての XML ファイルが Building.dtd の新規ロケーションを指すようになります。  

XML カタログ内の項目の更新

XML カタログの項目を更新すると、その新規情報を使用するために XML エディターのビューを更新する必要が生じることがあります。これを行うには、「依存関係の再ロード」ツールバー・ボタン 「依存関係の再ロード」ツールバー・ボタンのイメージ をクリックします。ビューは現行の XML カタログ設定を使用して更新されます。 XML エディターのビューの更新が必要になるのは、更新された XML カタログ項目を参照する XML ファイルを開いている場合のみです。

詳細については、関連タスクを参照してください。

(c) Copyright 2001、World Wide Web Consortium (マサチューセッツ工科大学、Institut National de Recherche en Informatique et en Automatique、慶応大学)。

関連概念
XML エディター
関連タスク
DTD または XML スキーマの制約による編集
DOCTYPE 宣言の編集
XML カタログへ項目を追加する
DTD およびスキーマの変更による XML ファイルの更新
ネーム・スペース情報の編集
XML 処理命令の編集
設計ビューでの編集
ソース・ビューでの編集
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.