Podpora katalogových souborů

Katologové soubory jsou výbornou myšlenkou, která umožňuje snazší přenositelnost XML dokumentů při zachování pohodlí pro autory. Pokud někomu posíláme XML dokumenty, měly by použité systémové identifikátory (které například odkazují na soubor s DTD) obsahovat absolutní URL adresu, která je dosažitelná odkudkoliv. Dokumenty jsou pak snadno přenositelné, protože všechny další soubory potřebné pro jejich validaci apod. jsou dostupné na síti.

Problém nastává v situacích, kdy nejsme připojeni k síti. Zdroj označený systémovým identifikátorem je pak nedostupný.

Elegantním řešením tohoto problému jsou katalogové soubory, které umožňují přemapovat veřejné i systémové identifikátory na jejich lokálně dostupnou kopii. Katalogové soubory podporuje většina SGML aplikací, ve světě XML jejich podpora však není zdaleka tak běžná.

Výhody použití katalogů ve všech souvislostech popisuje Norman Walsh ve svém článku If You Can Name It, You Can Claim It!. Součástí článku je i knihovna v Javě, která umožňuje přidání podpory katalogů do téměř libovolného parseru. Tato knihovna je součástí i upravené verze XT. Formát katalogových souborů je standardizován sdružením OASIS.

Pokud chceme, aby XT využivalo katalogový soubor catalog, stačí drobně změnit příkaz, kterým jej spouštíme

java -cp <cesta k xt.jar>xt.jar -Dxml.catalog.files=catalog com.arbortext.xsl.sax.Driver dokument styl [výstup] [nastavení parametrů]

Všimněte si, že se mění třída, která se spouští. Používá se upravená verze, která upraví třídu použitou pro načítání externích entit. Také je potřeba nastavit vlastnost xml.catalog.files.

Pokud se rozhodneme používat katalogové soubory s XT, patrně je již používáme s dalšími nástroji jako je parser nsgmls nebo editor Emacs. V tom případě už máme cesty ke katalogovým souborům uloženy v proměnné prostředí SGML_CATALOG_FILES. Můžeme proto rovnou použít její hodnotu.

Pro časté spouštění se nám samozřejmě vyplatí vytvoření dávkového souboru. Ve Windows zhruba takto

@java -cp c:\xmllib\xt.jar -Dxml.catalog.files=%SGML_CATALOG_FILES% com.arbortext.xsl.sax.Driver %1 %2 %3 %4 %5 %6 %7 %8 %9

Na Unixu asi takto

#!/bin/sh
java -cp /usr/share/java/xml/xt.jar -Dxml.catalog.files=$SGML_CATALOG_FILES com.arbortext.xsl.sax.Driver $*

Časem snad budu mít více času popsat zde způsob práce s katalogovými soubory podrobněji.

© Jiří Kosek 2000