Wenn eine XML-Datei einer DTD oder einem XML-Schema zugeordnet wird, ist sie an alle in der DTD bzw. im XML-Schema enthaltenen strukturellen Regeln gebunden. Damit es als gültige XML-Datei gilt, muss ein Dokument eine DTD oder ein XML-Schema aufweisen und allen Deklarationen in der DTD bzw. dem XML-Schema entsprechen.
Es gibt zwei verschiedene Möglichkeiten, XML-Dateien DTDs oder XML-Schemata zuzuordnen.
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">
InvoiceId ist die öffentliche ID der DTD-Datei. Sie wird dazu verwendet, die XML-Datei einer DTD-Datei zuzuordnen (in diesem Fall ist die DTD-Datei Invoice.dtd). Wenn die öffentliche ID "InvoiceId" dem Schlüssel des XML-Katalogeintrags für Invoice.dtd entspricht, wird die URI des XML-Katalogeintrags (mit Informationen zur Position von Invoice.dtd) dazu verwendet, die DTD zu lokalisieren. Andernfalls wird die DOCTYPE-System-ID ("C:\mydtds\Invoice.dtd"), die direkt auf die Dateisystemposition der DTD verweist, zur Lokalisierung der DTD verwendet.
Hinweis: Sie können auch eine System-ID als Schlüssel in einem XML-Katalogeintrag verwenden. Wenn eine System-ID als Schlüssel verwendet wird, wird ein DOCTYPE-Tag wie der folgende in eine XML-Datei eingefügt:
<!DOCTYPE Root-name SYSTEM "MyDTD.dtd">
Dabei ist MyDTD.dtd die System-ID, die dem Schlüssel eines XML-Katalogeintrags entspricht.
Wenn eine XML-Datei einem XML-Schema zugeordnet wird, werden ein oder mehrere Positionsattribute in die XML-Datei eingefügt. Die Informationen in "schemaLocation" dienen als eine Art Hinweis für den XML-Prozessor. Die folgenden Beispiele zeigen "schemaLocation"-Attribute.
<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"> ....
In Beispiel 1 verweist der Hinweis in "schemaLocation" ('C:\myschemas\PurchaseOrder.xsd') direkt auf die Dateisystemposition oder URI des XML-Schemas. In diesem Fall lokalisiert der XML-Prozessor die Schemadatei direkt.
In Beispiel 2 verweist der Hinweis in "schemaLocation" ('PO.xsd') auf einen XML-Katalogeintrag. PO.xsd entspricht dem Schlüssel des XML-Katalogeintrags für PurchaseOrder.xsd, und die URI des XML-Katalogeintrags (mit Informationen zur Position von PurchaseOrder.xsd) wird dazu verwendet, das XML-Schema zu lokalisieren.
In beiden Beispielen ist http://www.ibm.com im Tag xsi:schemaLocation eine URI, die den Namensbereich für das XML-Schema identifiziert.
<purchaseOrder xmlns:="www.ibm.com" xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">
Das Attribut "schemaLocation" verweist sowohl auf den Schlüssel als auch auf die tatsächliche Position des Schemas.
DTD oder XML-Schema befindet sich auf einem fernen Server
Für einige Funktionen im XML-Editor, wie z. B. die Prüfung und die Inhaltshilfe, ist es erforderlich, dass eine DTD oder ein XML-Schema zur Verfügung steht. Die Produktdokumentation enthält Informationen zur Verwendung für die Fälle, in denen sich die DTD oder das XML-Schema auf der lokalen Maschine befindet. In vielen Fällen kann sich die DTD oder das XML-Schema jedoch auf einem fernen Server befinden. Beispiel:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">
Normalerweise stellt dieser Fall kein Problem dar, da die DTD bzw. das XML-Schema vom fernen Server abgerufen werden kann. Wenn Sie jedoch hinter einer Firewall arbeiten und nicht über ein SOCKS-System verfügen, bietet die Workbench momentan keine Möglichkeit, einen SOCKS-Server zum Abrufen einer DTD oder eines XML-Schemas anzugeben. Wenn Sie kein SOCKS-System verwenden können, besteht die Ausweichlösung für dieses Problem darin, eine Kopie der DTD bzw. des XML-Schemas abzurufen (z. B. mit Hilfe eines Web-Browsers) und diese Kopie auf der lokalen Maschine zu speichern. Dann können Sie entweder eine lokale Kopie im selben Projekt wie die XML-Datei speichern oder mit Hilfe des XML-Katalogs der (lokalen) Position der DTD eine öffentliche ID zuordnen.
Hinweis: Wenn Sie einer XML-Datei ein XML-Schema oder eine DTD zugeordnet haben, das bzw. die sich an einer anderen Position im Netzwerk befindet, und Sie auf einer Maschine arbeiten, die nicht mit dem Netzwerk verbunden ist, können Sie die oben beschriebenen Schritte ausführen, um die Inhaltshilfe oder die Prüfungsfunktion für Ihre XML-Datei zu verwenden.
Wenn Sie eine direkte Zuordnung zwischen einer XML-Datei und einem XML-Schema bzw. einer DTD erstellen, müssen Sie jedesmal, wenn Sie die Position des Schemas oder der DTD ändern, alle XML-Dateien, die darauf verweisen, ermitteln und mit der neuen DTD- bzw. Schemaposition aktualisieren. Wenn Sie einer XML-Datei jedoch einen XML-Schema- oder DTD-Schlüssel zuordnen, müssen Sie bei einer Änderung der Schema- oder DTD-Position lediglich den XML-Katalogeintrag aktualisieren, nicht jede einzelne XML-Datei.
Beispiel: Sie verwenden die DTD "Building.dtd", die fünf XML-Dateien zugeordnet ist: Office.xml, House.xml, Apartment.xml, Bank.xml und PostOffice.xml. Sie versetzen die DTD-Datei Building.dtd an eine neue Position. Bei einer direkten Zuordnung zwischen Building.dtd und allen XML-Dateien müssen Sie die <DOCTTYPE>-Deklaration in jeder XML-Datei so aktualisieren, dass sie auf die neue Position von Building.dtd verweist. Bei einer XML-Katalogzuordnung, bei der alle beteiligten XML-Dateien lediglich auf den Schlüssel von Building.dtd verweisen, müssen Sie nur die URI aktualisieren, um zu erreichen, dass alle XML-Dateien auf die neue Position von Building.dtd verweisen.
Nach der Aktualisierung
eines Eintrags im XML-Katalog müssen Sie möglicherweise die XML-Editorsicht aktualisieren,
damit sie die neuen Informationen enthält.
Klicken Sie hierzu auf die Schaltfläche Abhängigkeiten erneut laden in der
Symbolleiste, sodass die
Sicht mit den aktuellen XML-Katalogeinstellungen aktualisiert wird.
Sie müssen die XML-Editorsicht nur dann aktualisieren, wenn Sie eine XML-Datei geöffnet haben,
die auf den aktualisierten XML-Katalogeintrag verweist.
Weitere Informationen finden Sie in den zugehörigen Tasks.
(c) Copyright 2001, World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University).