När en XML-fil associeras med en DTD eller ett XML-schema faller den under eventuella strukturella regler i DTDn eller XML-schemat. Om ett dokument ska betraktas som en giltig XML-fil måste det åtföljas av en DTD eller ett XML-schema och överensstämma med alla deklarationer i DTDn eller XML-schemat.
Det finns två sätt att associera XML-filer med DTDer eller XML-scheman.
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">
InvoiceId är den publika identifieraren för DTD-filen. Den används för att associera XML-filen med en DTD-fil (i det här fallet är DTD-filen Invoice.dtd). Om den publika identifieraren InvoiceId motsvarar nyckeln för XML-katalogposten för Invoice.dtd, då används URI för XML-katalogposten (som innehåller information om placeringen av Invoice.dtd) för att hitta DTD-filen. Annars används systemidentifieraren för DOCTYPE ( "C:\mydtds\Invoice.dtd"), som hänvisar direkt till filsystemets placering i DTD-filen, för att hitta DTD-filen.
Obs! Du kan också använda en systemidentifierare som en nyckel i en XML-katalogpost. Om du använder en systemidentifierare som en nyckel, inkluderas ett DOCTYPE-märkord av följande slag i XML-filen:
<!DOCTYPE Root-name SYSTEM "MyDTD.dtd">
där MyDTD.dtd är den systemidentifierare som motsvarar nyckeln för en XML-katalogpost.
Om en XML-fil associeras med ett XML-schema, inkluderas ett eller flera schemaplaceringsattribut i XML-filen.Informationen i schemaLocation tillhandahålls som en "vink" till XML-processorn. I följande exempel visas attributen för schemaLocation.
<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 exempel 1 hänvisar 'vinken' för schemaLocation ('C:\myschemas\PurchaseOrder.xsd') direkt till filsystemets placering eller XML-schemats URI. I det här fallet placeras schemafilen direkt av XML-processorn.
I exempel 2 hänvisar 'vinken' för schemaLocation ('PO.xsd') till en XML-katalogpost. PO.xsd motsvarar nyckeln för XML-katalogposten för PurchaseOrder.xsd, och XML-katalogpostens URI (som innehåller information om placeringen av PurchaseOrder.xsd) används för att hitta XML-schemat.
I båda exemplen är http://www.ibm.com i märkordet xsi:schemaLocation en URI som identifierar XML-schemats namnområde.
<purchaseOrder xmlns:="www.ibm.com" xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">
Attributet schemaLocation pekar på både nyckeln och den verkliga placeringen av schemat.
DTD-filen eller XML-schemat återfinns på en fjärransluten server
För flera funktioner i XML-redigeraren, t ex validering och innehållshjälp, krävs att en DTD-fil eller ett XML-schema är tillgängligt. Produktens dokumentation innehåller användningsinformation för fall när DTD-filen eller XML-schemat återfinns på en lokal dator. I många fall kan dock DTD-filen eller XML-schemat återfinnas på en fjärransluten server, till exempel:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">
I allmänhet utgör detta inte något problem eftersom DTD-filen eller XML-schemat kan hämtas från den fjärranslutna servern. Om du befinner dig bakom en brandvägg och inte har ett SOCKSifierat system, finns det för arbetsmiljön för närvarande inte något sätt för dig att ange en socksserver för hämtning av en DTD-fil eller ett XML-schema. Om du inte kan SOCKSifiera systemet är lösningen på det här problemet att hämta en kopia av DTD-filen eller XML-schemat (t ex med hjälp av en webbläsare) och spara den kopian på den lokala datorn. Sedan kan du placera en lokal kopia i samma projekt som XML-filen eller använda XML-katalogen för att associera en publik identifierare med DTD-filens (lokala) placering.
Obs! Om du har en XML-fil associerad med ett XML-schema eller en DTD-fil som återfinns någon annanstans i nätverket, och du arbetar på en dator som inte är ansluten till nätverket, då kan du följa de steg som beskrevs tidigare om du vill använda innehållshjälpen eller validera XML-filen.
Om du skapar en direkt associering mellan en XML-fil och ett XML-schema eller en DTD-fil måste du, varje gång du ändrar schemats eller DTD-filens placering, följa upp och uppdatera alla hänvisade XML-filer med den nya placeringen av DTD-filen eller schemat. Om du däremot associerar en XML-fil med ett XML-schema eller DTD-nyckel behöver du, när du ändrar schemats eller DTD-filens placering, endast uppdatera XML-katalogposten i stället för varje enskild XML-fil.
Anta till exempel att du har en DTD-fil med namnet "Building.dtd" som är associerad med fem XML-filer - Office.xml, House.xml, Apartment.xml, Bank.xml och PostOffice.xml. Du flyttar DTD-filen Building.dtd till en ny plats. Om du har en direkt associering mellan Building.dtd och alla XML-filer måste du uppdatera <DOCTTYPE>-deklarationen i varje XML-fil så att den återspeglar den nya placeringen av Building.dtd. Om du däremot har en XML-katalogsassociering och alla XML-filer endast hänvisar till nyckeln för Building.dtd, då behöver du endast uppdatera en URI, och alla XML-filer pekar sedan på den nya platsen för Building.dtd.
När du har
uppdaterat en post i XML-katalogen kanske du behöver uppdatera XML-redigerarens
vy så att den nya informationen används. Det gör du genom att klicka på verktygsknappen Läs in beroenden igen så att
vyn uppdateras med de aktuella inställningarna för XML-katalogen. Du behöver
endast uppdatera XML-redigerarens vy när du har en XML-fil öppen som hänvisar
till XML-katalogposten som uppdaterades.
Mer information finns i närliggande ämnen.
(c) Copyright 2001, World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University).