Når en XML-fil tilknyttes en DTD eller et XML-skema, er den underlagt de strukturregler, der er indeholdt i DTD'en eller XML-skemaet. For at blive betragtet som en gyldig XML-fil skal et dokument være ledsaget af en DTD (eller et XML-skema) og passe til alle erklæringer i DTD'en (eller XML-skemaet).
Der er to forskellige måder at tilknytte XML-filer til DTD'er eller XML-skemaer på.
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">
InvoiceId er den offentlige id for DTD-filen. Den bruges til at tilknytte XML-filen til en DTD-fil (i dette tilfælde er DTD-filen Invoice.dtd). Hvis den offentlige id InvoiceId svarer til nøglen for indgangen Invoice.dtd i XML-kataloget, så bruges URI'en for XML-katalogindgangen (som indeholder oplysninger om placeringen af Invoice.dtd) til at finde DTD'en. I modsat fald bruges system-id'en i DOCTYPE ("C:\mydtds\Invoice.dtd"), som refererer direkte til DTD'ens placering i filsystemet, til at finde DTD'en.
<!DOCTYPE rodnavn SYSTEM "MyDTD.dtd">
hvor MyDTD.dtd er den system-id, som svarer til nøglen for en XML-katalogindgang.
Hvis en XML-fil tilknyttes til et XML-skema, indsættes der en eller flere skemaplaceringsattributter i XML-filen. Oplysningerne i schemaLocation fungerer som et "hint" til XML-processoren. Følgende eksempler viser schemaLocation-attributter: attributes:
<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"> ....
I Eksempel 1, henviser schemaLocation 'hint' ('C:\myschemas\PurchaseOrder.xsd') direkte til filsystemplaceringen eller URI'en for XML-skemaet. I dette tilfælde findes skemafilen direkte af XML-processoren.
I Eksempel 2 henviser schemaLocation 'hint' ('PO.xsd') til en XML-katalogindgang. PO.xsd svarer til nøglen i XML-katalogindgangen for PurchaseOrder.xsd, og URI'en for XML-katalogindgangen (som indeholder oplysninger om placeringen af PurchaseOrder.xsd) bruges til at finde XML-skemaet.
I begge eksempler er http://www.ibm.com i koden xsi:schemaLocation en URI, som identificerer navneområdet for XML-skemaet.
<purchaseOrder xmlns:="www.ibm.com" xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">
Attributten schemaLocation peger på både nøglen for og den faktiske placering af skemaet.
DTD-fil eller XML-skema findes på en ekstern server
Flere funktioner i XML-editoren, f.eks. validering og Indholdsassistance, kræver, at der er en DTD eller et XML-skema til rådighed. Produktdokumentationen indeholder anvisninger om brugen i tilfælde, hvor DTD'en eller XML-skemaet findes på den lokale maskine. I mange tilfælde er DTD'en eller XML-skemaet imidlertid placeret på en ekstern server, f.eks.:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">
Normalt giver det ingen problemer, fordi DTD'en eller XML-skemaet kan hentes fra den eksterne server. Hvis du imidlertid er beskyttet af en firewall og ikke har et SOCKS-klargjort system, er der i øjeblikket ingen metoder på arbejdsbænken til at angive en Socks-server, når du vil hente en DTD eller et XML-skema. Hvis systemet ikke kan SOCKS-klargøres, kan du omgå problemet ved at hente en kopi af DTD'en eller XML-skemaet (f.eks. vha. en webbrowser) og gemme kopien på den lokale maskine. Herefter kan du enten placere en lokal kopi i samme projekt som XML-filen eller bruge XML-kataloget til at knytte en offentlig id til DTD'ernes (lokale) placering.
Hvis du opretter en direkte tilknytning mellem en XML-fil og et XML-skema eller en DTD-fil, skal du, hver gang du ændrer placeringen på skemaet eller DTD'en, spore og opdatere alle de XML-filer, der indeholder henvisninger, så de angiver den nye placering på DTD'en eller skemaet. Hvis du derimod tilknytning en XML-fil til et XML-skema eller en DTD-nøgle, behøver du kun opdatere XML-katalogindgangen og ikke hver enkelt XML-fil, når du ændrer placeringen på skemaet eller DTD'en.
Eksempel: Du har en DTD ved navn Building.dtd, som er tilknyttet fem XML-filer: Office.xml, House.xml, Apartment.xml, Bank.xml og PostOffice.xml. Du flytter DTD-filen Building.dtd til en ny placering. Hvis du har en retningstilknytning mellem Building.dtd og alle XML-filerne, skal du opdatere <DOCTTYPE>-erklæringen i de enkelte XML-filer, så den afspejler den nye placering på Building.dtd. Hvis du derimod har en XML-katalogtilknytning, og alle XML-filerne blot refererer til nøglen for Building.dtd, skal du kun opdatere URI'en, hvorefter alle XML-filerne peger på den nye placering af Building.dtd.
Når du har opdateret en indgang i XML-kataloget, skal du evt. opfriske oversigten i XML-editor, så den indeholder de nye oplysninger. Det gør du ved at klikke på knappen Genindlæs afhængigheder på værktøjslinjen , hvorefter oversigten opdateres med de aktuelle XML-katalogindstillinger. Du behøver kun opfriske XML-editoroversigten, når du har en åben XML-fil, som henviser til den XML-katalogindgang, du har opdateret.
Der er flere oplysninger under de relaterede opgaver.