XML Catalogs

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

XML Catalogs ist eine Technik zum Ersetzen von externen Referenzen in XML-Dokumenten. Hierbei wird beim Parsen des XML überprüft, ob es für die referenzierte externe Datei im Katalog eine Ersetzungsregel gibt. Wird hier eine zutreffende Regel gefunden, so wird die in der Datei vorhandene Referenz durch die Referenz aus dem Katalog ersetzt. Der Katalog selbst ist eine XML-Datei, die dem Parser bekannt gemacht werden muss. XML Catalogs ist ein OASIS-Standard.

XML Catalogs hat zwei primäre Einsatzgebiete:

  1. Ersetzen von entfernten Dateien durch lokale Dateien: Viele Dateien binden weitere externe Dateien ein. Wenn dabei jedes Mal eine Netzwerkverbindung aufgebaut werden muss, wird die Ausführung verlangsamt und im Fall eines Verbindungsfehlers eventuell gestört. Zudem können Server, die häufig benutzte Dateien bereitstellen (beispielsweise die Server des W3C für die DTD von XHTML unter http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd), überlastet werden.
  2. Ersetzen von Referenzen durch andere: Es lassen sich zum Beispiel alte URLs oder veraltete Schemata durch neue ersetzen, ohne am jeweiligen Dokument bzw. an der jeweiligen Anwendung Änderungen vornehmen zu müssen. Dies ist für XML-Schnittstellen (bei denen man oft das Datenformat externer Quellen nicht beeinflussen kann) eine gängige Technik.

Das folgende Beispiel zeigt einen Katalog (üblicherweise gespeichert in einer Datei mit dem Namen catalog.xml), der für die externe Referenz mit dem System-Identifier http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd eine lokale DTD unter dtd/xhtml1/xhtml1-strict.dtd bereitstellt. Analog wird mit den beiden anderen DTDs verfahren.

  <?xml version="1.0"?>
  <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

    <system systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
            uri="dtd/xhtml1/xhtml1-strict.dtd"/>

    <system systemId="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
            uri="dtd/xhtml1/xhtml1-transitional.dtd"/>

    <system systemId="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
            uri="dtd/xhtml11/xhtml11-flat.dtd"/>

  </catalog>

Das Problem kann für mehrere Dokumente auch gelöst werden, indem ganze Teile des URI ersetzt werden:

  <?xml version="1.0"?>
  <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

    <rewriteURI uriStartString="http://www.w3.org/TR/xhtml1/DTD/" rewritePrefix="dtd/"/>

  </catalog>

Folgender Katalog weist unterschiedlichen System-Identifiern (z. B. andere Schreibweisen) dieselbe lokale DTD zu:

<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.1//EN" "http://www.oasis-open.org/committees/entity/release/1.1/catalog.dtd">

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
	<systemSuffix systemIdSuffix="xhtml1-strict.dtd" uri="dtd/xhtml1/xhtml1-strict.dtd"/>
	<systemSuffix systemIdSuffix="XHTML1-STRICT.dtd" uri="dtd/xhtml1/xhtml1-strict.dtd"/>
</catalog>

Diese Funktionalität wurde erst mit Version 1.1 in den Katalog-Standard aufgenommen.