XML-bestandskoppelingen met DTD's en XML-schema's

Als een XML-bestand aan een DTD of XML-schema is gekoppeld, is het gebonden aan eventuele structurele regels die de DTD of het XML-schema bevat. Om als een geldig XML-bestand beschouwd te worden, moet een document vergezeld gaan van een DTD of een XML-schema en moet het voldoen aan alle declaraties in de DTD of het XML-schema.

Er bestaan twee verschillende manieren om XML-bestanden aan DTD's of XML-schema's te koppelen.

  1. Rechtstreekse koppeling - Het XML-bestand bevat de naam van een DTD in de doctype-declaratie (bijvoorbeeld, <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, waarbij dtdfile.dtd de naam is van het DTD-bestand) of het bevat het pad van een XML-schema in het kenmerk schemaLocation van het hoofdelement van het XML-bestand (bijvoorbeeld, <xsi:schemaLocation="http://www.ibm.com schema.xsd">, waarbij schema.xsd de naam is van het XML-schema.
  2. XML-catalogusitem - U kunt DTD-bestanden en XML-schemabestanden registreren in de XML- catalogus en deze koppelen aan een Sleutel die deze bestanden vertegenwoordigt. Vervolgens kunt u vanuit een XML-bestand naar een sleutel van een DTD-bestand of XML-schemabestand verwijzen in plaats van dat u rechtstreeks naar het DTD-bestand of het XML-schemabestand verwijst. Een XML-catalogusitem bestaat uit twee delen - de sleutel (die de DTD of het XML-schema vertegenwoordigt) en een URI (die informatie bevat over de locatie van de DTD of het XML-schema).

Hoe een koppeling werkt

Een XML-bestand koppelen aan een DTD
Als een XML-bestand aan een DTD is gekoppeld, wordt er een DOCTYPE-tag zoals de volgende tag in het XML-bestand opgenomen.
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

InvoiceId is het openbare ID van het DTD-bestand. Het wordt gebruikt om het XML-bestand te koppelen aan een DTD-bestand ( in dit geval is het DTD-bestand Invoice.dtd). Als het openbare ID InvoiceId overeenkomt met de sleutel van het XML-catalogusitem voor Invoice.dtd, wordt de URI van het XML-catalogusitem (dat informatie bevat over de locatie van Invoice.dtd) gebruikt om de DTD op te zoeken. In andere gevallen wordt het systeem-ID van DOCTYPE ( "C:\mydtds\Invoice.dtd"), dat rechtstreeks verwijst naar de bestandssysteemlocatie van de DTD, gebruikt om de DTD op te zoeken.

Opmerking: U kunt ook een systeem-ID als een sleutel gebruiken in een XML-catalogusitem. Als u een systeem-ID gebruikt als een sleutel, wordt er een DOCTYPE-tag zoals de volgende tag in een XML-bestand opgenomen:

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

waarbijMyDTD.dtd het systeem-ID is dat overeenkomt met de sleutel van een XML-catalogusitem.

Een XML-bestand koppelen aan een XML-schema

Als een XML-bestand gekoppeld is aan een XML-schema, worden een of meer schemalocatiekenmerken opgenomen in het XML-bestand. De informatie in de schemaLocation wordt als "hint" doorgegeven aan de XML-processor. In de volgende voorbeelden worden schemaLocation-kenmerken weergeven.

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

In Voorbeeld 1, verwijst de schemaLocation-'hint' ('C:\myschemas\PurchaseOrder.xsd') rechtstreeks naar de bestandssysteemlocatie of URI van het XML-schema. In dit geval wordt het schemabestand rechtstreeks opgezocht door de XML-processor.

Voorbeeld 2, de schemaLocation-'hint' ('PO.xsd') verwijst naar een XML-catalogusitem. PO.xsd komt overeen met de sleutel van het XML-catalogusitem voor PurchaseOrder.xsd, en de URI van het XML-catalogusitem (dat informatie bevat over de locatie van PurchaseOrder.xsd) wordt gebruikt om het XML-schema op te zoeken.

In beide voorbeelden is http://www.ibm.com in de tag xsi:schemaLocation een URI waarmee de naamruimte voor het XML-schema wordt aangegeven.

U kunt ook een naamruimte als een sleutel voor een XML-catalogusitem gebruiken. Als u een naamruimte gebruikt als een sleutel, wordt er een schemaLocation-tag zoals de volgende tag in een XML-bestand opgenomen.
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

Het kenmerk schemaLocation verwijst zowel naar de sleutel en de werkelijke locatie van het schema.

DTD of XML-schema bevindt zich op een server op afstand

Voor verschillende functies in de XML-editor, zoals validatie en contenthulp, is de beschikbaarheid van een DTD of een XML-schema vereist. De productdocumentatie bevat gebruiksinformatie voor de gevallen waarin de DTD of het XML-schema zich op uw lokale machine bevindt. In veel gevallen kan de DTD of het XML-schema zich op een server op afstand bevinden. Bijvoorbeeld:

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

Normaal gesproken levert dit geval geen problemen op omdat de DTD of het XML-schema kan worden opgehaald van de server op afstand. Als u zich echter achter een firewall bevindt en geen voor SOCKS geschikt systeem hebt, biedt de workbench u momenteel geen mogelijkheid om een socksserver op te geven voor het ophalen van een DTD of een XML-schema. Als u uw systeem niet voor SOCKS geschikt kunt maken, kunt u als tijdelijke oplossing voor dit probleem een kopie van de DTD of het XML-schema ophalen (bijvoorbeeld met behulp van een webbrowser) en die kopie op uw lokale machine opslaan. Vervolgens kunt u een lokale kopie in hetzelfde project als uw XML-bestand plaatsen, of kunt u de XML-catalogus gebruiken om een openbaar ID te koppelen aan de (lokale) locatie van de DTD.

Opmerking: Als u een XML-bestand hebt gekoppeld aan een XML-schema dat of DTD die zich elders in het netwerk bevindt, en als u op een machine werkt die is losgekoppeld van het netwerk, kunt u de stappen uitvoeren die eerder zijn beschreven als u de contenthulp wilt gebruiken of uw XML-bestand wilt valideren.

Voordelen van XML-catalogusitemkoppelingen

Als u een directe koppeling maakt tussen een XML-bestand en een XML-schema of DTD-bestand, moet u elke keer dat u de locatie van het schema of de DTD wijzigt, alle verwijzende XML-bestanden opsporen en bijwerken met de nieuwe locatie van de DTD of het schema. Als u echter een XML-bestand aan een XML-schema of DTD-sleutel koppelt, hoeft u, als u de locatie van het schema of de DTD wijzigt, alleen het XML-catalogusitem bij te werken in plaats van elk afzonderlijk XML-bestand.

U hebt bijvoorbeeld een DTD-bestand met de naam "Gebouw.dtd", dat gekoppeld is aan vijf XML-bestanden - Kantoor.xml, Huis.xml, Appartement.xml, Bank.xml en Postkantoor.xml. U verplaatst het DTD-bestand Gebouw.dtd naar een nieuwe locatie. Als u een richtingskoppeling hebt tussen Gebouw.dtd en alle XML-bestanden, moet u de declaratie <DOCTTYPE> bijwerken in elk XML-bestand om de nieuwe locatie van Gebouw.dtd aan te geven. Als u echter een XML-cataloguskoppeling hebt en alle XML-bestanden alleen maar verwijzen naar de sleutel van Gebouw.dtd, hoeft u alleen de URI bij te werken en zullen alle XML-bestanden verwijzen naar de nieuwe locatie van Gebouw.dtd.

Een item in de XML-catalogus bijwerken

Nadat u een item in de XML-catalogus hebt bijgewerkt, kan het nodig zijn om de view van de XML-editor te vernieuwen zodat de nieuwe informatie wordt gebruikt. Als u dit wilt doen, klikt u op de werkbalkknop Dependency's opnieuw laden Deze afbeelding bestaat uit de werkbalkknop Dependency's opnieuw laden en de view wordt bijgewerkt met behulp van de huidige XML-catalogusinstellingen. U hoeft de view van de XML-editor alleen maar te vernieuwen als u een XML-bestand open hebt dat verwijst naar het XML-catalogusitem dat is bijgewerkt.

Voor meer informatie raadpleegt u de gerelateerde taken.

(c) Copyright 2001, World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University).

Verwante onderwerpen
XML-editor
Verwante taken
Bewerken met voorwaarden van DTD-bestanden of XML-schema's
DOCTYPE-declaraties bewerken
Gegevens aan de XML-catalogus toevoegen
XML-bestanden bijwerken met wijzigingen in DTD-bestanden en schema's
Naamruimtegegevens bewerken
XML-verwerkingsinstructies bewerken
Bewerken in de ontwerpweergave
Bewerken in de broncodeweergave