set a book dohromady a zvlast

Jirka Kosek jirka na kosek.cz
Čtvrtek Červenec 17 12:19:52 CEST 2003


Martin Man wrote:

> [ prosim prihodte me pri odpovidani do cc: ]

A nechcete se přihlásit do konference. To kopírování adresy mi na 
odpovědi zabralo skoro nejvíce času :-(

> vyrobil sem tedy hlavni fajl pro <set> a do nej pres ENTITY ... SYSTEM ...
> nadeklaroval a nainkludoval zminovane soubory obsahujici <article> a <book>
> 
> a ejhle, nic samozrjeme nejde prelozit (je to vubec spravne slovo???) protoze
> entity u vlozenych souboru se ignoruji, moje otazka tedy zni:
> 
> jak napsat vice clanku (kazdy ve svem souboru a pouzivajici ENTITY) tak, abych
> je mohl prekladat kazdy zvlast a zaroven je byl schopen zaradit do velkeho
> <set>, ktery musi jit take prelozit, aniz bych deklarace vsech ENTITY
> pouzitych ve vsech dokumentech musel duplikovat i v hlavnim souboru
> obsahujicim <set>

Problém je v tom, že externí textové entity nesmějí obsahovat vlastní 
<!DOCTYPE a tedy ani deklaraci entit. Nejjednodušší řešení je pro 
složení do <set> použít XInclude:

Práce s externími entitami není úplně pohodlná – musíme je předem 
deklarovat a jednotlivé entity nemohou obsahovat vlastní deklaraci typu 
dokumentu. Tento problém lze obejít používáním standardu XInclude pro 
vkládání XML dokumentů. Tento standard zatím není podporován mnoha 
aplikacemi, nicméně jej podporuje například XSLT procesor xsltproc, 
takže je možné XInclude použít již dnes.

Jednotlivé části dokumentu uložíme do samostatných souborů, které jsou 
samostatné XML dokumenty včetně vlastní deklarace typu dokumentu. To nám 
umožňuje jejich bezproblémové samostatné zpracování pomocí klasických 
nástrojů, XML editory nevyjímaje. Pokud pak chceme části dokumentu 
(např. kapitoly) použít v nějakém větším dokumentu, vložíme je pomocí 
speciálního elementu XInclude:

<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
             href="kapitola.xml"/>

Příklad 7.3. Složení dokumentu z několika částí pomocí XInclude – 
velkakniha2.xml

<?xml version='1.0' encoding='windows-1250'?>
<!DOCTYPE book PUBLIC '-//OASIS//DTD DocBook XML V4.2//EN'
                'http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd'>
<book lang="cs" xmlns:xi="http://www.w3.org/2001/XInclude">
   <bookinfo>
     <title>Velká kniha</title>
     <subtitle>Složená z několika entit</subtitle>
   </bookinfo>
   <preface>
     <title>Úvod</title>
     <para>Následuje několik sice nesouvisejících kapitol, ale na
ukázku to stačí ne?</para>
   </preface>
   <xi:include href="inline.xml"/>
   <xi:include href="callouts.xml"/>
   <xi:include href="obrazky.xml"/>
   <xi:include href="seznamy.xml"/>
   <xi:include href="tabulky.xml"/>
   <xi:include href="trida.xml"/>
   <xi:include href="reference.xml"/>
</book>

Pokud chceme takto složený dokument validovat, musíme parseru říci, aby 
validaci provedl až po složení celého dokumentu (volbou --postvalid 
místo --valid):

xmllint --xinclude --postvalid --noout dokument.xml

Při zpracování dokumentu XSL styly musíme zapnout podporu XInclude 
pomocí parametru --xinclude. Např. pro převod do jedné HTML stránky 
použijeme:

xsltproc --xinclude -o dokument.html c:/docbook/xsl/html/docbook.xsl 
dokument.xml

Ještě doplním, že pokud chcete pro zpracování použít něco jiného, než 
xsltproc, stačí si pomocí xmllintu vygenerovat dočasný dokument se 
složeným dokumentem:

xmllint --xinclude --postvalid dokument.xml > docasny_dokument.xml

-- 
-----------------------------------------------------------------
   Jirka Kosek  	
   e-mail: jirka na kosek.cz
   http://www.kosek.cz
------------- další část ---------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3403 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://www.linux.cz/pipermail/docbook/attachments/20030717/d780d0ea/attachment.bin>


Další informace o konferenci Docbook