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