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