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 erklæringen af dokumenttype (f.eks. <!DOCTYPE root-element SYSTEM "dtdfil.dtd" >, hvor dtdfil.dtd er navnet på DTD'en), eller den indeholder stien til et indeholder i attributten schemaLocation til XML-filens rodelement (f.eks. <xsi:schemaLocation="http://www.ibm.com/skema.xsd">, hvor skema.xsd er navnet på XML-skemaet.
  2. XML-katalogindgang - du kan registrere DTD- og XML-skemafiler i XML-kataloget og tilknytte en nøgle til dem, som repræsenterer dem. Derefter kan du referere til en DTD- eller XML-skemafils nøgle fra en XML-fil i stedet for at referere direkte til DTD- 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 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.

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, som svarer til nøglen for en XML-katalogindgang.

Tilknyt en XML-fil til 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 viser schemaLocation-attributter: attributes:

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

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

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å knappen Genindlæs afhængigheder på værktøjslinjen 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.

Relaterede begreber
XML-editor
Relaterede 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 i oversigten Design
Redigering i oversigten Kilde