XML fájl társítások DTD és XML sémákkal

Amikor egy XML fájl társítva van egy DTD meghatározással vagy XML sémával, akkor kötik a DTD meghatározásban vagy XML sémában található szerkezeti szabályok. Ahhoz, hogy egy fájlt érvényes XML fájlnak tekintsen a rendszer, a dokumentumhoz tartoznia kell egy DTD fájlnak vagy XML sémának, és meg kell felelnie az abban szereplő összes deklarációnak.

Két különböző mód van az XML fájlok társítására DTD fájlokkal vagy XML sémákkal.

  1. Közvetlen társítás - Az XML fájl vagy tartalmazza a DTD nevét a doctype deklarációjában (például <!DOCTYPE root-element SYSTEM " dtdfile.dtd" >, ahol dtdfile.dtd a DTD fájl neve), vagy tartalmazza egy XML séma elérési útját az XML fájl gyökérelemének schemaLocation attribútumában (például <xsi:schemaLocation="http://www.ibm.com/schema.xsd">, ahol schema.xsd az XML séma neve).
  2. XML katalógus bejegyzés - Lehetősége van a DTD és XML sémafájlok regisztrálására az XML katalógusba, és társításukra egy Kulcs értékkel, ami képviseli őket. Majd a DTD vagy XML séma fájl Kulcs értékre hivatkozhat egy XML fájlból, ahelyett, hogy közvetlenül a DTD vagy XML séma fájlra hivatkozna. Egy XML katalógus bejegyzés kér részt tartalmaz - a Kulcsot (ami a DTD vagy XML sémát képviseli) és egy URI azonosítót (ami a DTD vagy XML séma helyéről tartalmaz információkat).

Társítások működése

XML fájl társítása DTD fájllal
Ha egy XML fájl társítva van egy DTD fájllal, akkor az alábbihoz hasonló DOCTYPE címke található az XML fájlban:
<!DOCTYPE root-name PUBLIC "InvoiceId" "C:\mydtds\Invoice.dtd">

Az InvoiceId a DTD fájl nyilvános azonosítója. Ez használatos az XML fájl társítására egy DTD fájllal (ebben az esetben a DTD fájl az Invoice.dtd). Ha az InvoiceId megfelel az Invoice.dtd fájlhoz tartozó XML katalógus bejegyzés Kulcs értékének, akkor a rendszer az XML katalógus bejegyzés URI azonosítójának segítségével (ami az Invoice.dtd fájl helyéről tartalmaz információkat) keresi meg a DTD fájlt. Máskülönben a DOCTYPE rendszerazonosítója ("C:\mydtds\Invoice.dtd") - ami közvetlenül a DTD fájlrendszerbeli helyére vonatkozik - használatos a DTD megkeresésére.

Megjegyzés: Rendszerazonosítót is használhat kulcsként az XML katalógus bejegyzésekben. Ha rendszerazonosítót használ kulcsként, akkor akkor az alábbihoz hasonló DOCTYPE címke található az XML fájlokban:
<!DOCTYPE Root-name SYSTEM "MyDTD.dtd"> 

ahol a MyDTD.dtd egy XML katalógus bejegyzés Kulcsának megfelelő rendszer azonosító.

XML fájlok társítása XML sémákkal

Ha egy XML fájl társítva van egy XML sémával, akkor legalább egy séma hely attribútum található az XML fájlban. A schemaLocation attribútumban található információk "tippként" szolgának az XML feldolgozó számára. Az alábbi példák a schemaLocation attribútumokat mutatják be:

1. példa
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com C:\myschemas\PurchaseOrder.xsd">
<shipTo country="US">
...
2. példa
<purchaseOrder xmlns="http://www.ibm.com"
xsi:schemaLocation="http://www.ibm.com PO.xsd">
<shipTo country="US">
....

Az 1. példában a schemaLocation 'tipp' ('C:\myschemas\PurchaseOrder.xsd') közvetlenül az XML séma fájlrendszerbeli helyére vagy URI azonosítójára vonatkozik. Ebben az esetben az XML feldolgozó közvetlenül keresi meg a sémafájlt.

A 2. példában a schemaLocation 'tipp' ('PO.xsd') egy XML katalógusbejegyzésre vonatkozik. A PO.xsd a PurchaseOrder.xsd fájlhoz tartozó XML katalógusbejegyzés Kulcsának felel meg, és a rendszer az XML katalógusbejegyzés URI azonosítójának segítségével (ami az PurchaseOrder.xsd fájl helyéről tartalmaz információkat) keresi meg a XML fájlt.

Mindkét példában a http://www.ibm.com az xsi:schemaLocation címkében egy olyan URI azonosító, ami azonosítja a névteret az XML séma számára.

Névteret is használhat Kulcsként az XML katalógusbejegyzésekben. Ha névteret használ kulcsként, akkor akkor az alábbihoz hasonló schemaLocation címke található az XML fájlokban:
<purchaseOrder xmlns:="www.ibm.com"
xsi:schemaLocation="http://www.ibm.com po/xsd/PurchaseOrder.xsd ">

A schemaLocation attribútum a Kulcsra és a séma tényleges helyére is mutat.

A DTD vagy XML séma egy távoli kiszolgálón található

Az XML szerkesztő számos funkciója, például az érvényesítés és a tartalomsegéd megköveteli a DTD vagy XML séma rendelkezésre állását. A termékdokumentáció biztosít használati információkat az olyan esetekre, amikor a DTD vagy XML séma a helyi gépen található. Azonban számos esetben a DTD vagy XML séma távoli kiszolgálón található, például

<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">

Ez az eset általában nem jelent problémát, mert a DTD vagy XML séma lekérhető a távoli kiszolgálóról. Ha azonban tűzfal mögött van és nem rendelkezik SOCKSified rendszerrel, akkor a munkaterület jelenleg nem ad módot egy socks kiszolgáló megadására a DTD vagy XML séma lekéréséhez. Ha nem képes SOCKSify végrehajtására a rendszeren, akkor az áthidaló megoldás a DTD vagy XML séma egy példányának lekérése (például egy webböngésző segítségével) és elmentése a helyi gépre. Majd vagy elhelyezhet egy helyi példányt ugyanabban a projektben, mint az XML fájl, vagy pedig az XML katalógus segítségével társíthat egy nyilvános azonosítót a DTD (helyi) helyével.

Megjegyzés: Ha egy XML fájl olyan XML sémával vagy DTD fájllal van társítva, ami valahol máshol van a hálózatban, és a hálózatra nem csatlakozó gépen dolgozik, akkor végezze el az előbbiekben ismertetett lépéseket, amennyiben tartalomsegédet szeretne használni, illetve érvényesíteni az XML fájlt.

XML katalógusbejegyzés társítások előnyei

Ha közvetlen társítást hoz létre egy XML fájl és egy XML séma vagy DTD fájl között, és bármikor módosítja a séma vagy DTD helyét, akkor követnie és frissítenie kell az összes hivatkozó XML fájlt a DTD vagy a séma új helyével. Ha azonban az XML fájlokat XML séma vagy DTD fájl Kulcsokkal társítja, akkor a séma vagy a DTD helyének módosításakor csak az XML katalógusbejegyzést kell frissítenie az egyes XML fájlok helyett.

Például tegyük fel, hogy rendelkezik egy Building.dtd nevű DTD fájllal, ami öt XML fájllal van társítva: Office.xml, House.xml, Apartment.xml, Bank.xml és PostOffice.xml. Áthelyezi a Building.dtd DTD fájlt egy új helyre. Ha közvetlen társítással rendelkezik a Building.dtd és az összes XML fájl között, akkor minden egyes XML fájlban frissítenie kell a <DOCTTYPE> deklarációt, hogy tükrözze a Building.dtd új helyét. Ha azonban XML katalógus társítással rendelkezik, és az összes XML fájl a Building.dtd fájl kulcsára hivatkozik, akkor csak az URI azonosítót kell frissítenie, és az összes XML fájl a Building.dtd új helyére fog mutatni.

Bejegyzések frissítése az XML katalógusban

Elképzelhető, hogy miután frissített egy bejegyzést az XML katalógusban, frissítenie kell az XML szerkesztő nézetet, hogy az az új információkat használja. Ehhez kattintson a Függőségek újrabetöltése eszköztárgombra Ez a kép a Függőségek újrabetöltése eszköztárgomb, és a nézet frissítésre kerül az aktuális XML katalógus beállítások használatával. Csak akkor kell frissítenie az XML szerkesztő nézetet, ha nyitva van egy olyan XML fájl, ami a frissített XML katalógusbejegyzésre hivatkozik.

További információkért nézze meg a kapcsolódó feladatokat.

Kapcsolódó fogalmak
XML szerkesztő
Kapcsolódó feladatok
Szerkesztés DTD vagy XML séma megszorításokkal
DOCTYPE deklarációk szerkesztése
Bejegyzések hozzáadása az XML katalógushoz
XML fájlok frissítése a DTD fájlokon és sémákon elvégzett módosításokkal
Névtér információk szerkesztése
XML feldolgozási utasítások szerkesztése
Szerkesztés a Terv nézetben
Szerkesztés Forrás nézetben