Marked selections v XML docbooku

Miroslav Kure kurem na upcase.inf.upol.cz
Pondělí Leden 5 18:08:40 CET 2004


Přeji pěkného dne.

Právě přecházím ze SGML docbooku na jeho XML verzi a rád bych vyřešil
jednu věc. V původních dokumentech jsou nadefinovány entity pro různé
počítačové architektury následovně:

<![ %alpha; [
  <!ENTITY kernelversion    "2.2.22">
  <!ENTITY releasename      "woody">
  <!ENTITY arch-title       "Alpha">
]]>

<![ %m68k; [
  <!ENTITY kernelversion    "2.2.20">
  <!ENTITY releasename      "woody">
  <!ENTITY arch-title       "Motorola 680x0">
]]>

a při sestavování se dynamicky nadefinovalo

<!ENTITY % m68k    "IGNORE">
<!ENTITY % alpha   "INCLUDE">

což zajistilo nadefinování entit &kernelversion; &arch-title; podle
hodnot pro danou architekturu. (V příkladu pro alphu).

Jak toho dosáhnout v XML verzi DB?

Napadlo mě vyhodit všechny architekturně-specifické věci do
samostatných souborů, do hlavičky hlavního dokumentu vložit řádek

<!ENTITY % archdata SYSTEM "arch.ent"> %archdata;

, kde arch.ent by byl symbolický odkaz, který by při sestavování vždy
ukazoval na soubor obsahující data pro příslušnou architekturu. Tohle
funguje, ale přijde mi to náchylné k chybám, protože dříve bylo všechno
v několika logických souborech (urls.ent, files.ent, docstruct.ent
- cca stovky entit) a změna údaje znamenala změnu jednoho nebo
několika okolních řádků (hodně údajů je společných).
Nyní je potřeba projít několik souborů a zkontrolovat, jestli daná
architektura náhodou také nepředefinovává tuto entitu a příslušně ji
upravit.

Další problém nastane, pokud bych chtěl do hry zamíchat i různé
jazykové verze:

<![ %lang-de; [ <!ENTITY www-debian "www.debian.de"> ]]>
<![ %lang-pt; [ <!ENTITY www-debian "www.br.debian.org"> ]]>
<!ENTITY www-debian "www.debian.org">

Pak bych musel mít (jazky*architektury + společné) definičních
souborů, což se mi také moc nelíbí.

Neřešil někdo něco podobného? Předem díky za nápady

                                                    Miroslav Kuře


Další informace o konferenci Docbook