Set
Jirka Kosek
jirka na kosek.cz
Pátek Únor 21 14:31:36 CET 2003
Radek Budar wrote:
>
> > Ve vaĹĄem pĹĂpadÄ bude asi nejjednoduĹĄĹĄĂ knihy sloĹžit pomocĂ XInclude,
> > který si poradàs DOCTYPE u jednotlivých knih.
>
> Pokud tomu dobĹe rozumĂm, musĂ pak transformaci provĂĄdÄt jinak neĹž standardnÄ. (zapnutĂ podpory XInclude). Jak by mÄl vypdat konverznĂ pĹĂkaz pro pĹevod do HTML HELPu?
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
--
-----------------------------------------------------------------
Jirka Kosek
e-mail: jirka na kosek.cz
http://www.kosek.cz
Další informace o konferenci Docbook