XML-filtilknytninger med DTDer og XML-skjemaer

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:

  1. Direkte tilknytning - XML filen inneholder enten navnet på en DTD i sin DOCTYPE-deklarasjon (for eksempel <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, der dtdfile.dtd er navnet på DTD-filen) eller den inneholder banen til et XML-skjema i attributtet schemaLocation i XML-filens rotelement (for eksempel <xsi:schemaLocation="http://www.ibm.com schema.xsd">, der schema.xsd er navnet på XML-skjemaet.
  2. XML-katalogoppføring - Du kan registrere DTD- og XML-skjemafiler i XML-katalogen og knytte dem til en nøkkel som representerer dem. Så kan du referere til en DTD- eller XML-skjemafils nøkkel fra en XML-fil i stedet for å referere direkte til DTD- eller XML-skjemafilen. En XML-katalogoppføring inneholder to deler - nøkkelen (som representerer DTDen eller XML-skjemaet) og en URI (som inneholder opplysninger om DTDens eller XML-skjemaets plassering).

Slik virker en tilknytning

Knytte en XML-fil til en DTD
Hvis en XML-fil knyttes til en DTD, er en DOCTYPE-kode som denne inkludert i XML-filen:
<!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.

Knytte en XML-fil til et XML-skjema

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:

Eksempel 1
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd">
<shipTo country="US">
...
Eksempel 2
<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.

Du kan også bruke et navneområde som nøkkel for en XML-katalogoppføring. Hvis du bruker et navneområde som nøkkel, er en schemaLocation-kode som denne inkludert i en XML-fil:
<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.

Fordeler ved tilknytninger til XML-katalogoppføring

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.

Oppdatere en oppføring i XML-katalogen

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 Denne figuren er 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).

Beslektede begreper
XML-redigeringsprogram
Beslektede oppgaver
Redigere med DTD- eller XML-skjemabegrensninger
Redigere DOCTYPE-deklarasjoner
Legge til oppføringer i XML-katalogen
Oppdatere XML-filer med endringer gjort i DTDer og skjemaer
Redigere navneområdeinformasjon
Redigere XML-behandlingsinstruksjoner
Redigere i Design-visningen
Redigere i Kilde-visningen