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 に対応し ているならば、DTD の場所の探索には XML カタログ項目の URI (Invoice.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 エディターのビューを更新する必要が生じることがあります。
これを行うには、「依存関係の再ロード」ツールバー・ボタン
をクリックします。
ビューは現行の XML カタログ設定を使用して更新されます。
XML エディターのビューの更新が必要になるのは、更新された XML カタログ項目を参照する XML ファイルを開いている場合のみです。
詳細については、関連タスクを参照してください。
(c) Copyright 2001、World Wide Web Consortium (マサチューセッツ工科大学、Institut National de Recherche en Informatique et en Automatique、慶応大学)。