Når en XML-fil knyttes til en DTD eller et XML-skjema, er det bundet av ev. strukturelle regler i DTDen eller XML-skjemaet. For at det skal være en gyldig XML-fil, må et dokument ha en DTD eller et XML-skjema og samsvare med alle deklarasjonene i DTDen (eller XML-skjemaet).
Det er to forskjellige måter å knytte XML-filer til DTDer eller XML-skjemaer:
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">
InvoiceId er felles identifikator for DTD-filen. Den brukes til å knytte XML-filen til en DTD-fil (i dette tilfellet er DTD-filen Invoice.dtd). Hvis den felles identifikatoren InvoiceId tilsvarer nøkkelen til XML-katalogoppføringen for Invoice.dtd, brukes URIen til XML-katalogoppføringen (som inneholder opplysninger om plasseringen til Invoice.dtd) til å finne DTDen. Ellers brukes DOCTYPEs system-ID ("C:\mydtds\Invoice.dtd"), som refererer direkte til DTDens filsystemplassering, til å finne DTDen.
Merk: Du kan også bruke en system-ID som nøkkel i en XML-katalogoppføring. Hvis du bruker en system-ID som nøkkel, er en DOCTYPE-kode som denne inkludert i en XML-fil:
<!DOCTYPE Root-name SYSTEM "MyDTD.dtd">
der MyDTD.dtd er system-IDen som tilsvarer nøkkelen til XML-katalogoppføringen.
Hvis en XML-fil er tilknyttet et XML-skjema, er et eller flere skjemaplasseringsattributter inkludert i XML-filen. Informasjonen i schemaLocation gis som et hint til XML-prosessoren. Følgende eksempler viser schemaLocation-attributter:
<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 refererer schemaLocation-hintet ('C:\myschemas\PurchaseOrder.xsd') direkte til filsystemplasseringen til XML-skjemaets URI. I dette tilfellet vil skjemafilen bli plassert av XML-prosessoren direkte.
I eksempel 2 refererer schemaLocation-hintet ('PO.xsd') til en XML-katalogoppføring. PO.xsd tilsvarer nøkkelen til XML-katalogoppføringen for PurchaseOrder.xsd, og URIen til XML-katalogoppføringen (som inneholder opplysninger om plasseringen til PurchaseOrder.xsd) blir brukt til å finne XML-skjemaet.
I begge eksemplene er http://www.ibm.com i xsi:schemaLocation-koden en URI som identifiserer navneområdet for XML-skjemaet.
<purchaseOrder xmlns:="www.ibm.com" xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">
schemaLocation-attributtet peker på både nøkkelen og den faktiske plasseringen til skjemaet.
DTDen eller XML-skjemaet ligger på en ekstern server.
Flere funksjoner i XML-redigeringsprogrammet, f.eks. validering og innholdshjelp, krever at det finnes en DTD eller et XML-skjema. Produktdokumentasjonen har opplysninger om bruk for tilfeller der DTDen eller XML-skjemaet ligger på den lokale maskinen. I mange tilfeller kan imidlertid DTDen eller XML-skjemaet ligge på en ekstern server, for eksempel:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">
Normalt er dette ikke noe problem, for DTDen eller XML-skjemaet kan hentes fra den eksterne serveren. Hvis du befinner deg bak en brannmur og ikke har et SOCKSified-system, har imidlertid ikke arbeidsbenken noen måte for deg å oppgi socks-server for henting av DTD eller XML-skjema. Hvis du ikke kan SOCKSify systemet, er måten å omgå dette problemet på, å hente en kopi av DTDen eller XML-skjemaet (ved hjelp av en nettleser, for eksempel) og lagre kopien på den lokale maskinen. Så kan du enten plassere en lokal kopi i samme prosjekt som XML-filen eller bruke XML-katalogen til å knytte en felles-ID til DTDens (lokale) plassering.
Merk: Hvis du har en XML-fil knyttet til et XML-skjema eller en DTD som er et annet sted i nettverket, og du arbeider på en maskin som er frakoblet fra nettverket, kan du følge fremgangsmåten som er beskrevet ovenfor, hvis du vil bruke innholdshjelp eller validere XML-filen.
Hvis du oppretter en direkte tilknytning mellom en XML-fil og et XML-skjema eller en DTD-fil, må du hver gang du endrer plassering for skjemaet eller DTDen, spore opp og oppdatere alle refererende XML-filer med den nye plasseringen til DTDen eller skjemaet. Men hvis du knytter en XML-fil til et XML-skjema eller en DTD, behøver du bare å oppdatere XML-katalogoppføringen i stedet for hver enkelt XML-fil når du endrer plassering for skjemaet eller DTDen.
Anta for eksempel at du har en DTD kalt "Building.dtd", som er knyttet til fem XML-filer - Office.xml, House.xml, Apartment.xml, Bank.xml, and PostOffice.xml. Du flytter DTD-filen Building.dtd til et nytt sted. Hvis du har en retningstilknytning mellom Building.dtd og alle XML-filene, må du oppdatere <DOCTYPE>-deklarasjonen i hver XML-fil så den gjenspeiler den nye plasseringen til Building.dtd. Men hvis du har en XML-katalogtilknytning, og alle XML-filene bare refererer til nøkkelen til Building.dtd, behøver du bare oppdatere URIen, og alle XML-filene vil peke på den nye plasseringen for Building.dtd.
Når du har oppdatert en oppføring i XML-katalogen,
kan du måtte oppdatere XML-redigeringsprogrammets visning slik at den bruker den nye informasjonen. Det gjør du ved å klikke på verktøylinjeknappen Last inn avhengigheter på nytt
og visningen vil bli oppdatert
med gjeldende XML-kataloginnstillinger. Du behøver bare oppdatere XML-redigeringsprogrammets visning når du har en XML-fil åpen som
refererer til XML-katalogoppføringen som ble oppdatert.
Du finner flere opplysninger i beslektede oppgaver.
(c) Copyright 2001, World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University).