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