XML-filtilknytninger til DTD'er og XML-skemaer

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å.

  1. Direkte tilknytning - XML-filen indeholder enten navnet på en DTD i sin dokumenttypeerklæring(f.eks. <!DOCTYPE rodelement SYSTEM " dtdfile.dtd" >, hvor dtdfile.dtd er navnet på DTD-filen), eller også indeholder den stien til et XML-skema i schemaLocation-attributten til XML-filens rodelement (f.eks. <xsi:schemaLocation="http://www.ibm.com schema.xsd">, hvor schema.xsd er navnet på XML-skemaet.
  2. XML-katalogindgang - Du kan registrere DTD'er og XML-skemafiler i XML-kataloget og tilknytte dem til en nøgle, som repræsenterer dem. Du kan herefter referere til en DTD- eller en XML-skemafil-nøgle fra en XML-fil i stedet for at henvise direkte til DTD'en eller XML-skemafilen. En XML-katalogindgang indeholder to dele - nøglen (som repræsenterer DTD'en eller XML-skemaet) og en URI (som indeholder oplysninger om placeringen på DTD'en eller XML-skemaet).

Sådan fungerer en tilknytning

Tilknyt en XML-fil til en DTD
Hvis en XML-fil tilknyttes til en DTD, indsættes der en DOCTYPE-kode i stil med følgende i XML-filen:
<!DOCTYPE rodnavn PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

InvoiceId er den offentlige id på 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 svarer til nøglen for XML-katalogindgangen for Invoice.dtd, bruges URI'en for XML-katalogindgangen (som indeholder oplysninger om placeringen af Invoice.dtd) til at finde DTD'en. Ellers bruges den system-id for DOCTYPE ("C:\mydtds\Invoice.dtd"), som henviser direkte til filsystemplaceringen af DTD, til at finde DTD'en.

Bemærk: Du kan også bruge en system-id som nøgle i XML-katalogindgangen. Hvis du bruger en system-id som nøgle, indsættes der en DOCTYPE-kode i stil med følgende i en XML-fil:

<!DOCTYPE rodnavn SYSTEM "MyDTD.dtd"> 

hvor MyDTD.dtd er den system-id, der svarer til nøglen for en XML-katalogindgang.

Tilknyt en XML-fil med et XML-skema

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 viserschemaLocation-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, 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.

Du kan også bruge et navneområde som nøgle for en XML-katalogindgang. Hvis du bruger et navneområde som nøgle, indsættes der en schemaLocation-kode i stil med følgende i en XML-fil:
<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'en eller XML-skemaet er placeret 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.

Bemærk: Hvis du har tilknyttet en XML-fil med et XML-skema eller en DTD, som er placeret et andet sted i netværket, og du arbejder på en maskine, som ikke er forbundet med netværket, kan du følge de tidligere beskrevne trin, hvis du vil bruge Indholdsassistance eller validere XML-filen.

Fordele ved XML-katalogindgangstilknytninger

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, som hedder "Building.dtd", og som er tilknyttet med 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.

Opdatér indgang i XML-katalog

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å værktøjslinjeknappen Genindlæs afhængigheder Illustration af værktøjslinjeknappen Genindlæs afhængigheder, 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.

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

Beslægtede begreber
XML-editor
Beslægtede opgaver
Redigér med DTD eller XML-skemabetingelser
Redigér DOCTYPE-erklæringer
Tilføj indgange til XML-kataloget
Opdatér XML-filer med ændringer foretaget i DTD'er og skemaer
Redigér oplysninger om navneområde
Redigér XML-behandlingsinstruktioner
Redigér oversigten Design
Redigér oversigten Kilde