Vkladani/pouzivani obrazku v docbooku

Jirka Kosek jirka na kosek.cz
Neděle Prosinec 18 10:15:45 CET 2005


Radek Hnilica wrote:

> Zdálo se mi toto zavedení dalšího místa "redirekce" vhodné.  Pokud
> bych provedl něco s obrázkem týkající se změny jména souboru nebo
> cesty.  Nastavil bych to na jednom místě místo hledání všech výskytů.
> Nicméně podstatná část obrázků se používá jen na jednom místě, takže
> jsem to oželel.

Entity můžete použít i s fileref:

<!ENTITY logo "pictures/logo.png">
....
<imagedata fileref="&logo;"/>
....

> Ano o této příčině vím, a trpělivě čekám až ji opravíte.  Ale zde se
> projevila další "chyba/vlastnost".  On totiž hlásí, že nemůže otevřít
> soubor file:/home/radek/src/book/docbook/picture/, ale v xml ve
> skutečnosti jsem se odkazoval na úplně jiný soubor a měl hledat
> /home/radek/cache/book/docbook/picture.  Tu cestu si "vyvěštil" ze
> symbolických linků, kterými jsem poskládal prostředí a on je
> dereferencoval, čímž rozbil prostředí v kterém byl spuštěn a tím pádem
> nemůže dosáhnout na žádné soubory neb ty jsou někde úplně jinde.
> Matně se mi vybavuje, že by někde měl být přepínač nebo volba, kterými
> se zakáže vyhodnocování symbolických linků (prostě chci aby se k
> symbolickým linkům choval jako k adresářů nebo souborům).

Symbolické linky jsou něco, čemu rozumí váš filesystém, ale XSLT 
procesor o tom nic neví.

> Atribut fileref má však vlastní problémy.  A tím je.  Co do něj mám
> napsat.  XSLT systém potřebuje znát dvě hodnoty.  Cestu k souboru s
> obrázkem v xml dokumenut a cestu k souboru s obrázkem v html
> dokumentu.  Nicméně atribut je jen jeden a cesty rozdílné.

To jde celkem snadno vyřešit pomocí parametru img.src.path 
(http://docbook.sourceforge.net/release/xsl/current/doc/html/img.src.path.html). 
V něm jde nastavit prefix cesty, který se doplní před každý odkaz na 
obrázek ve vygenerovaném HTML kódu.

> 1. pomocí fileref s absolutní cestou
> fileref="/uplne/divna/absolutni/cesta/smerujici/k/pracovnimu/adresari/se/sestavenymi/obrazky/obrazek.png"

Absolutní cesty není dobré používat.

> 2. nebo pomocí url s relativní cestou, kterou ovšem měří od teď přesně
> nevím kterého dokumentu.  Ovšem stějně mám všechny xml dokumenty v
> asresáři ./xml/, takže se odkazuji fileref="../picture/obrazek.png"
> jenže v html by mělo byt <img src="picture/obrazek.png" ...> a je tam
> zase něco jiného.

V tomto případě stačí nastavit img.src.parh=dummy/ a problém je vyřešen. 
V HTML dostanete <img src="dummy/../picture/obrazek.png">, což se 
správně vyhodnotí jako picture/obrazek.png.

> Zatím jsem dopěl k poznání že jediné možné řešení je mít stejné
> relativní cesty, což by znamenalo přemístnit všechny picture adresáře
> do jednoho ./xml/picture/ .  To mě ovšem přivádí na úplný začátek, neb
> v ./xml/picture nemají co dělat generované obrázky.  A už vůbec ne
> jakékoliv pobrázky neb je v tom pak strašný zmatek.
> 
> Struktura adresářů je asi taková
>   projekt/        základní soubory, make, negenerované katalogy entit, skripty
>   projekt/xml/    adresář se všemi xml kapitol, sekcí a taktéž kořenový xml
>   projekt/db/     databáze ze kterých jsou vytvářeny xml soubory v pracovní části
>   projekt/picture/  zdrojová data ze kterých jsou generovány obrázky 
>   projekt/figure/   -||-
>   projekt/example/  soubory s příklady
>   projekt/session/  zdrojová data sezení
> 
>   work/           pracovní adresář, neznámo kde.  je vytvořen dynamicky
>                   za běhu ale cesta k němu je známa jen přes
>                   proměnnou.  (toto je problém, zatím to smolím tak že
>                   vím kde ten adresář vznikne a cpu všude statické
>                   odkazy) Snad to nějak ošetřím preprocesorem.
> 
>   work/  zde jsou rovněž všechny vygenerované xml, a vygenerované katalogy entit

No, kdybyste ty dočasné XML generoval do work/xml, tak byste si spoustu 
problémů ušetřil, protože by vám souhlasily relativní cesty se 
skutečnými zdrojovými soubory.

>   work/picture/  zde mají být vygenerované obrázky z /projekt/picture/

Jestli ty obrázy oproti zdrojům modifikujete, je dobré nastavit i 
parametr graphicsize.use.img.src.path, aby se při generování HTML měřily 
rozměry skutečně použitých obrázků.

-- 
------------------------------------------------------------------
   Jirka Kosek     e-mail: jirka na kosek.cz     http://www.kosek.cz
------------------------------------------------------------------
   Profesionální školení a poradenství v oblasti technologií XML.
      Podívejte se na náš nově spuštěný web http://DocBook.cz
        Podrobný přehled školení http://xmlguru.cz/skoleni/
------------------------------------------------------------------
                    Nejbližší termíny školení:
      ** XSLT 13.-16.3.2006 ** XML schémata 24.-26.4.2006 **
        ** DocBook 15.-17.5.2006 ** XSL-FO 12.-13.6.2006 **
------------------------------------------------------------------

------------- další část ---------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3158 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://www.linux.cz/pipermail/docbook/attachments/20051218/024dff18/attachment.bin>


Další informace o konferenci Docbook