Ice Bear SoftReimplementace programu MakeIndex pomocí XSLT 2.0

Obsah

1. Úvod
2. Popis souborů
  2.1. musixdoc.idx
  2.2. prstyn.idx
  2.3. makeindex.rng/.xsd
  2.4. parse-index.xsl
  2.5. testsort.xsl
  2.6. sort-index.xsl
  2.7. format-index.xsl
  2.8. makeindex.xsl
3. Literatura
4. Download

1. Úvod

Cílem tohoto projektu je pokus o reimplementaci programu MakeIndex pomocí XSLT 2.0. Záměrem byla pouze demostrace možnosti takového využití XSLT, nikoliv vytvoření produkčního programu. Další osud projektu závisí na ohlasu potenciálních uživatelů a osobních potřebách autora. Program je poskytován podle licence GPL.

Transformační styly vyžadují procesor XSLT 2.0, např. Saxon v.8.x.

Transformační styly jsou vytvořeny modulárně a pracují v těchto krocích:

Výstup z obou těchto kroků lze pro účely testování zapsat do pomocného souboru. Struktura těchto souborů je definována v dokumentovaném schématu Relax NG (pouze anglicky).

Posledním krokem je formátování výstupu. Zde je demonstrován formát vhodný pro další použití v LaTEXu (format-index.xsl).

Projekt byl podrobně popsán ve Zpravodaji Československého sdružení uživatelů TEXu č. 1/2006.

 Začátek stránky 

2. Popis souborů

2.1. musixdoc.idx
2.2. prstyn.idx
2.3. makeindex.rng/.xsd
2.4. parse-index.xsl
2.5. testsort.xsl
2.6. sort-index.xsl
2.7. format-index.xsl
2.8. makeindex.xsl

2.1. musixdoc.idx

Modifikovaný soubor z dokumentace balíčku MusixTEX, při zpracování budou hlášeny chyby. Určen pouze pro testování, kódování ISO 8859-1.

Poznámka: Chyby byly do souboru vneseny úmyslně pro účely testování.

 Začátek stránky 

2.2. prstyn.idx

Další testovací soubor, kódování ISO 8859-2. Tento soubor byl vygenerován z textu povídky „Stříbrný prstýnek“, která vyšla v knize Všechna Editina tajemství.

 Začátek stránky 

2.3. makeindex.rng/.xsd

Definice struktury pomocných souborů ve schématu Relax NG. Konverze do XML schématu byla provedena programem trang. Schéma Relax NG bylo též transformováno do HTML. Byl k tomu použit "Nástroj pro anotaci schémat Relax NG".

 Začátek stránky 

2.4. parse-index.xsl

Transformační styl pro načtení souboru vytvořeného LaTEXem. Parametr index obsahuje seznam vstupních souborů oddělených čárkami, nepovinný parametr enc určuje kódování souborů (default je UTF-8). Ostatní parametry odpovídají svými jmény vlastnostem definovaným ve stylovém souboru programu MakeIndex. Některé z nich jsou použity v regulárních výrazech, proto před speciálními znaky musí být uvedeno zpětné lomítko.

Styl je primárně určen pro import do jiného stylu, ale ve fázi testování může být použit samostatně. Jméno počáteční šablony je parsed-index. Výstup musí odpovídat schématu makeindex.rng/.xsd.

Jestliže vstupní soubory file1.idxfile2.idx mají kódování ISO 8859-2, výstupní soubor file.xml má mít kódování CP852 a saxon8 je skript pro spuštění procesoru Saxon, použijeme příkaz:

saxon8 -o file.xml -it parsed-index parse-index.xsl index=file1.idx,file2.idx enc=iso-8859-2 !encoding=cp852
 Začátek stránky 

2.5. testsort.xsl

Pomocný testovací styl, viz sort-index.xsl.

 Začátek stránky 

2.6. sort-index.xsl

Tento styl provádí abecední řazení podle kritérií zadaných v parametrech. Řadí se jen ty elementy, jejichž jméno je zadáno v parametru keyword. Počáteční šablona pro testovací účely se jmenuje sorted-index a výstup musí odpovídat schématu makeindex.rng/.xsd. Styl nelze použít samostatně, ale musí být importován společně s jiným stylem vytvářejícím stejný výstup jako parse-index.xsl. Při použití testsort.xsl a obdobných požadavcích jako výše, použijeme:

saxon8 -o file.xml -it sorted-index testsort.xsl index=file1.idx,file2.idx enc=iso-8859-2 !encoding=cp852
 Začátek stránky 

2.7. format-index.xsl

Tento styl formátuje abecedně seřazený výstup pro další zpracování LaTEXem. Vlastnosti určované stylovým souborem programu MakeIndex se zde zadávají pomocí parametrů. Styl má dvě počáteční šablony: noheaders netvoří nadpisy, headers je tvoří. Některá písmena však nemají primární řadicí platnost a v nadpisech se tudíž nesměji objevit. Ekvivalence pro češtinu a slovenštinu je definována ve funkci zw:key. Pro jiné jazyky si musíte obdobné funkce vytvořit sami.

 Začátek stránky 

2.8. makeindex.xsl

Tento pomocný soubor pouze importuje styly parse-index.xsl, sort-index.xsl a format-index.xsl.

 Začátek stránky 

3. Literatura

Projekt byl inspirován přednáškou Michael Kay: Schema-aware XSLT Processing přednesenou na konferenci XML Prague v červnu 2005.

Další odkazy:

  1. XSLT 2.0
  2. XPath 2.0
  3. Trang: Multi-format schema converter based on RELAX NG
 Začátek stránky 

4. Download

xslt-indexing.zip, 39 KiB

 Začátek stránky