XML ファイルが DTD または XML スキーマと関連付けられるとき、DTD または XML スキーマ・ファイル内に含まれる なんらかの構造上の規則に束縛されます。 XML ファイルが有効である条件として、ある文書が DTD または XML スキーマに付随し、そして DTD または XML スキーマのすべての宣言に適合している必要があります。
XML ファイルを DTD または XML スキーマと関連付けるには、2 つの異なる方法があります。
<!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 スキーマと関連付けられている場合には、 1 つまたは複数のスキーマ・ロケーション属性が XML ファイルに含まれています。 schemaLocation 内の情報は、XML プロセッサーへの「ヒント」として提供されます。以下の例は、schemaLocation 属性を示しています。
<purchaseOrder xmlns="http://www.ibm.com" xsi:schemaLocation="http://www.ibm.com C:¥myschemas¥PurchaseOrder.xsd"> <shipTo country="US"> ...
<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 です。
<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 スキーマまたは 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 エディターのビューを更新する必要が生じることがあります。
これを行うには、「依存関係の再ロード (Reload Dependencies)」ツールバー・ボタン を
クリックし、ビューは現行の XML カタログ設定を使用して更新されます。
XML エディターのビューの更新が必要になるのは、更新された XML カタログ項目を参照する XML ファイルを開いている場合のみです。
詳細については、関連タスクを参照してください。
(c) Copyright 2001、World Wide Web Consortium (マサチューセッツ工科大学、Institut National de Recherche en Informatique et en Automatique、慶応大学)。