Tyto stránky jsou již neaktuální. Přejděte prosím na novou stránku o XT, kde je nová verze upraveného XT.

Podpora kódování ISO 8859-2 a windows-1250 v XT

Jirka Kosek


XT je program napsaný v jazyce Java, který umí transformovat XML dokumenty pomocí XSLT stylu. Bohužel, XT standardně používá parser XP, který nepodporuje kódování ISO 8859-2 a windows-1250, která se používají pro zápis textů v několika středoevropských jazycích. To ho pro nás činí prakticky nepoužitelným, protože podporované kódování UTF-8 zatím nepodporují všechny aplikace (zejména editory).

Protože jsem funkčnost XT potřeboval, upravil jsem XP tak, aby obě dvě výše zmíněná kódování podporoval. Stačilo drobně upravit dva soubory z distribuce XP verze 0.5 – Encoding.java a SingleByteEncoding.java. Úpravy jsem poslal zpět i autorovi programů Jamesu Clarkovi, takže je možné, že další verze XP a XT budou již obě dvě zmíněná kódování podporovat rovnou.

Pokud nechcete programy XP a XT po úpravě kompilovat, můžete využít mnou připravený archiv xt.jar. Narozdíl od distribuce jsou v tomto Java archivu obsaženy oba dva programy XT i XP včetně definice rozhraní SAX, které využívají.

Pro použití si stačí stáhnout xt.jar a uložit ho do libovolného adresáře. XT pak spustíme příkazem

java <cesta k xt.jar>xt.jar com.jclark.xsl.sax.Driver dokument styl [výstup] [nastavení parametrů]

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 com.jclark.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 com.jclark.xsl.sax.Driver $*

V použitých XSL stylech i XML dokumentech pak můžeme používat naše oblíbené kódování. Stačí jako první řádku souboru uvést jednu z následujících XML deklarací.

<?xml version="1.0" encoding="windows-1250"?>

<?xml version="1.0" encoding="iso-8859-2"?>

Program jsem testoval pouze pod Windows, ale doufám, že díky Javě bude pracovat i na unixových a dalších systémech. Pokud narazíte na nějakou chybu, která souvisí s kódováním, dejte mi vědět.

(c) Jiří Kosek 1999