Windows - Dokumentum hivatkozások az XML-ben

XML 8. rész

Általában egy XML dokumentum nem egy fájlból áll, hanem több különböző állományban található dokumentumrészletből épül fel. Ezek lehetnek a helyi merevlemezen, akár különböző könyvtárakban is, de lehetnek az Interneten vagy a hálózat egy másik gépén. Az alábbiakban bemutatunk egy egyszerű módszert a hivatkozások kialakítására és a részek összekapcsolására.
Internetet használók körében nem idegen kifejezés az URL (Unified Resource Locator), ami tulajdonképpen egy szabvány az Interneten tárolt fájlok elérésére. Segítségével egyértelműen meghatározható az állomány neve és elhelyezkedése a tartományban, illetve a kiszolgálón. Működési területe nem "korlátozódik" az Internetre, mert helyi gépen és helyi hálózaton is alkalmazható. URL-t akkor használunk, amikor a webböngésző címsorába beírjuk egy oldal címét, például: www.SoftwareOnline.hu.
Abszolút hivatkozások
XML dokumentumokban a különböző könyvtárszinteket a UNIX-LINUX rendszerekben használatos / jellel választjuk el egymástól és nem a Windows \ jelével. A dupla // jel bal oldalán szerepel az átviteli protokoll és egy kettőspont, míg jobb oldalán a dokumentum helye:
protokoll://szerver/mappa/fájl.kiterjesztés
Legtöbb esetben a HTTP protokollt használjuk, amikor egy fájlt megjelenítünk a böngészőben:
http://xyz.com/bin/article1.xml
A kommunikáció a 80-as porton zajlik. Ettől eltérni a következő példa szerint lehet:
http://xyz.com:81/bin/article1.xml
Ahol a 81-es portra tereltük a forgalmat. Természetesen a kiszolgálónak is kezelnie kell a változást. Az általánostól való eltérés sokszor zökkenőkkel jár, így van ez a portszámokkal is: ha a kliens és a kiszolgáló között tűzfalak, átjárók, útválasztók vagy más aktív elemek találhatók (nagyon valószínű) és ezeken le van tiltva minden más kommunikációs csatorna, akkor nem jön létre a kapcsolat.
Helyi fájlok elérésénél használjuk a "file" protokollt:
http://c:/XML_Tutorial/article1.xml
XML dokumentumokban így jelenik meg:
<!ENTITY Cikkek SYSTEM "file://c:/XML_Tutorial/article1.xml">
Bizonyos feldolgozó alkalmazások elvárhatják, hogy ne dupla / jelet használjunk a protokoll azonosítására, hanem szimplát:
<!ENTITY Cikkek SYSTEM "file:/c:/XML_Tutorial/article1.xml">
A következő formulában a három / jel közül a harmadik a gyökérkönyvtárat jelöli (lásd lejjebb a relatív elérési utaknál):
<!ENTITY Cikkek SYSTEM "file:///c:/XML_Tutorial/article1.xml">
Mi van, ha a fájl elérési útjában szerepel szóköz? A szóközt a %20 helyettesíti:
<!ENTITY Cikkek SYSTEM "file:/c:/XML%20Tutorial/article1.xml">
Ekkor a valós elérési út: "c:/XML Tutorial/article1.xml"
És ha % jel is szerepel? Akkor a %25 kifejezést kell használnunk:
<!ENTITY Cikkek SYSTEM "file:/c:/Konyveles/afa12%25.xml">
A valós elérési út: "c:/Konyveles/afa12%.xml"
Macintosh környezetben a következő módon kell hivatkozni a meghajtókra:
<!ENTITY Cikkek SYSTEM "file://Macintosh%20HD/XML_Tutorial/article1.xml">
Relatív hivatkozások
A relatív hivatkozások lehetővé teszik, hogy az aktuális dokumentum helyét vegyük gyökérpontnak és minden más dokumentumot ehhez viszonyítva adjunk meg. XML-ben nincs szükség a protokoll, a meghajtó és a kezdeti könyvtárak megismétlésére. Például az aktuális dokumentum a "c:\XML_Tutorial" mappában található és szükségünk van egy "article2.xml" nevű fájlra, ami a "c:\XML_Tutorial\Other" mappában helyezkedik el, akkor használhatjuk a következő formulát:
<!ENTITY Cikkek SYSTEM "Other/article2.xml">
Ha viszont a "c:\" gyökérkönyvtárban van, akkor a ".." jelekkel léphetünk vissza egy mappaszintet:
<!ENTITY Cikkek SYSTEM "../article2.xml">
A "c:\XML\article2.xml" dokumentumrészlet eléréséhez kombináljuk az előző két megoldást:
<!ENTITY Cikkek SYSTEM "../XML/article2.xml">
Lekérdezések
Gyakran előfordul, hogy a hivatkozott dokumentumot egy adatbázisból kell kikeresni a kiszolgálón található keresőrendszer segítségével. HTML-ben és XML-ben egyaránt igénybe vehetjük a szolgáltatást. A lekérdezést egy ? karakter vezeti be és utána az adott rendszer által értelmezhető feltételmegadás következik:
<!ENTITY CikkCime SYSTEM "http://www.SoftwareOnline.hu/XML_Tutorial/kereses?find=ArticleTitle=XML08">

XML cikksorozat