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.
<!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.
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.
<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 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.
<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.
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.
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 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).