Problemy s externimi soubory v souvislosti s profilaci
Radek Hnilica
Radek1 na hnilica.cz
Pátek Prosinec 9 12:56:16 CET 2005
On Wed, Dec 07, 2005 at 12:07:20PM +0100, Jirka Kosek wrote:
> Během transformace se měří obrázky, aby se do výstupu mohlo vložit
> width="...", height="...", případně, aby se mohly rozměry obrázku
> přepočítat. Včera jsem posílal mail s opravenou verzí extenzí pro Saxon,
> která by tuto chybu měla odstranit, ale mailing list to sežral. Poslal
> jsem vám ji znovu mimo list.
Opravenou verzi jsem dostal, a nyni ji pouzivam. Vyskytl se jiny problem.
Jak je vidět na http://www.hnilica.cz/book/docbook/ch02s01.html, dole
Příklad 1.9. Příklad hello.c (imagedata entityref). Místo entity
která ukazuje na ten samý soubor jaký je použit v předchozím příkladu
kde používám fileref, se mi načte seznam souborů v adresáři s
příkladem.
Entita je definována takto:
<!ENTITY example.hello.c SYSTEM "example/hello.c" NDATA linespecific>
a zkusil jsem i absolutně
<!ENTITY example.hello.c SYSTEM "/home/radek/src/book/docbook/example/hello.c" NDATA linespecific>
výsledek se liší a zahrnutím jména adresář s příklady.
Vypadá to, že v tom má pěkný zmatek i já sám. Moje představa,
požadavky jsou: adresář s projektem obsahuje katalog entit
'catalog.ent' a obsahuje podadresáře pro jednotlivé "druhy" souborů.
Např podadresář xml s hlavním kořenovým xml dokumentem, kapitolami a
sekcemi. Celé to vypadá asi takto:
docbook/
catalog.ent
xml/
docbook.xml
ch-srcbook.xml
example/ -- příklady
hello.c
db/ -- databáze
session/ -- záznamy sezení
...
mimo to existuje na disku ješte jíná adresářová struktura "cache", ve které jsou xml či jené soubory generované skripy jenž mají vztah k tomuto projektu. např se vyhodnocují databáze a v této "cache" se sestavují z databází xml soubory. Nebo se transformují sezení do "xml".
cache/
variable.postscript.pages
session/ -- vytvořená xml ze sezení z docbook/session
...
HTML dělám tak, že se postavím do pracovního "cache" adresáře, protože zde má vzniknout podadresář z html a spustím
$(SAXON) $(DOCDIR)/xml/$(ROOTFILE) $(STYLESHEET.HTML.AUTHOR)
kde první parametr je cesta k kořenovému xml a druhý parametr je cesta ke konkrétnímu xsl jenž je společné pro řadu dokumentů. Po substituci všech proměnných to vypadá takto:
rm /home/radek/cache/book/docbook/html/*.html
cd /home/radek/cache/book/docbook; java -Xms16M -Xmx96M -cp /usr/share/java/saxon-6.5.3.jar:/home/radek/lib/docbook/xsl/extensions/saxon653.jar:/usr/share/java/catalog.jar com.icl.saxon.StyleSheet /home/radek/src/book/docbook/xml/docbook.xml /home/radek/src/book/_common/author-html.xsl
Žádnou chybu mi to nikde nezahlásí a příklad s užitím entityref nenačte.
Otázka, jak se v dokumentu měří cesty k souborům?
V kořenovém xml načítám katalog entit
<!ENTITY % catalog SYSTEM "../catalog.ent"> %catalog;
t.j. tady je to měřeno relativně od adresáře v kterém je kořenové xml.
v katalogu entit pak zavádím ostatní xml dokumenty relativně k adresáře v kterém je katalog entit.
<!ENTITY chapter.srcbook SYSTEM "xml/ch-srcbook.xml">
Stejně zavádím i příklady
<!ENTITY example.hello.c SYSTEM "example/hello.c" NDATA linespecific>
Nicméně příklady mi to už nevezme, tady bych to tipnul na chybu v extensionech.
Je to tedy tak, že cesta se meří od dokumentu ve kterém ji uvedu?
tedy cesta uvedená v katalogu se měří od umístnění tohoto katalogu?
Cesta uvedená v xml dokumentu se měří od umístnění tohoto xml
dokumentu.
--
Radek Hnilica <Radek at Hnilica dot CZ> http://www.hnilica.cz
==============================================================
No matter how far down the wrong road you've gone, turn back.
Turkish proverb
... so turn back ... Now!
Další informace o konferenci Docbook