Portál AbcLinuxu, 3. května 2025 17:18
docbook-xsl-ns-1.75.2.tar.gz
, to ns v názvu je důležité, je to potřeba pro DocBook verze 5 (vysvětlení je v souboru README
uvnitř balíčku). Těmto šablonám budu dále říkat standardní šablony.
Teď si to všechno nainstalujte podle příslušných návodů (většinu stačí někam rozbalit, já k tomu používám adresář C:/Local
). Když máme všechno nainstalované, je čas přejít k nastavení a vlastnímu psaní.
$WORK
.
V adresáři $WORK
vytvoříme soubor CatalogManager.properties
s tímto obsahem
catalogs=catalog.xml; relative-catalogs=false static-catalog=yes catalog-class-name=org.apache.xml.resolver.Resolver verbosity=1Význam položek si asi musíte nastudovat jinde, třeba tady [6]. Potom vytvoříme soubor
$WORK/catalog.xml
(viz první řádek souboru výše) s následujícím obsahem.
<?xml version="1.0"?> <!DOCTYPE catalog PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> <group xml:base="file:///c:/Local/docbook-xsl/1.75.2/"> <uri name="fo-docbook.xsl" uri="fo/docbook.xsl"/> <uri name="html-docbook.xsl" uri="html/docbook.xsl"/> <uri name="xhtml-docbook.xsl" uri="xhtml/docbook.xsl"/> <uri name="html-chunk-common.xsl" uri="html/chunk-common.xsl"/> <uri name="xhtml-chunk-common.xsl" uri="xhtml/c.xsl"/> <uri name="html-changebars.xsl" uri="html/changebars.xsl"/> <uri name="xhtml-changebars.xsl" uri="xhtml/changebars.xsl"/> </group> </catalog>Na 7. řádku si upravte cestu ke standardním šablonám. Dále si v adresář
$WORK
vytvoříme podadresář s název custom_xsl
a v něm pro začátek podadresář html
. V tomto adresáři vytvoříme soubor docbook.xsl
s tímto obsahem
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook" exclude-result-prefixes="d" version="1.0"> <!-- <xsl:import href="html-docbook.xsl"/> --> <xsl:import href="html-changebars.xsl"/> <xsl:param name="paper.type" select="'A4'"/> <xsl:param name="section.autolabel" select="1"/> <xsl:param name="pixels.per.inch" select="150"/> </xsl:stylesheet>No a nakonec si vytvořte
Makefile
(nejlépe v adresáři $WORK
), abyste nemuseli příkazy psát pořád dokola. Můj má tento obsah.
#user settings RM=rm -f XALAN_HOME=c:\Local\xalan\2_7_1 DOCBOOK_HOME=c:\Local\docbook-xsl\1.75.2 FO_PROCESSOR=c:/Local/fop/fop.bat FO_PROCESSOR_CONFIG=-c c:/Local/fop/conf/myfop.xconf XML_RESOLVER=C:\Local\xml-commons-resolver\1.2\resolver.jar #don't touch the rest CLASSPATH:= "${CLASSPATH};$(XALAN_HOME)\xalan.jar;$(XALAN_HOME)\xml-apis.jar;$(XALAN_HOME)\xercesImpl.jar;$(DOCBOOK_HOME)\extensions\xalan27.jar;$(XML_RESOLVER)" XSLT_PROCESSOR=java org.apache.xalan.xslt.Process \ -ENTITYRESOLVER org.apache.xml.resolver.tools.CatalogResolver \ -URIRESOLVER org.apache.xml.resolver.tools.CatalogResolver XSLT_FO_STYLESHEET=custom_xsl/fo/docbook.xsl XSLT_HTML_STYLESHEET=custom_xsl/html/docbook.xsl XSLT_XHTML_STYLESHEET=custom_xsl/xhtml/docbook.xsl DOCUMENT=userManual XML_EXT=xml HTML_EXT=html XHTML_EXT=x.html FO_EXT=fo PDF_EXT=pdf #auxiliary targets #formatting objects $(DOCUMENT).$(FO_EXT): $(DOCUMENT).$(XML_EXT) $(XSLT_PROCESSOR) -xml -in $(DOCUMENT).$(XML_EXT) -out $(DOCUMENT).$(FO_EXT) -xsl $(XSLT_FO_STYLESHEET) #============================================================================== #targets for user html: $(DOCUMENT).$(XML_EXT) $(XSLT_PROCESSOR) -xml -in $(DOCUMENT).$(XML_EXT) -out $(DOCUMENT).$(HTML_EXT) -xsl $(XSLT_HTML_STYLESHEET) xhtml: $(DOCUMENT).$(XML_EXT) $(XSLT_PROCESSOR) -xml -in $(DOCUMENT).$(XML_EXT) -out $(DOCUMENT).$(XHTML_EXT) -xsl $(XSLT_XHTML_STYLESHEET) pdf: $(DOCUMENT).$(FO_EXT) $(FO_PROCESSOR) -fo $(DOCUMENT).$(FO_EXT) -pdf $(DOCUMENT).$(PDF_EXT) $(FO_PROCESSOR_CONFIG) $(RM) $(DOCUMENT).$(FO_EXT) all: pdf html xhtml clean: $(RM) $(DOCUMENT).$(FO_EXT) $(DOCUMENT).$(PDF_EXT) $(DOCUMENT).$(HTML_EXT) $(DOCUMENT).$(XHTML_EXT)Je potřeba upravit cesty na začátku souboru. A teď si v adresáři
$WORK
vytvořte nějaký minimalistický dokument v DocBooku a uložte ho pod jménem userManual.xml
(nebo nějaký jiný, ale pak si upravte i Makefile
).
Teď zkuste napsat příkaz
make htmlPo kratším chroustání by se měl objevit soubor
userManual.html
.
Teď co jste vlastně spáchali:
Soubor $WORK/custom_xsl/html/docbook.xsl
je vaše přizpůsobená XSLT šablona (custom XSLT template). Na začátku načítá šablonu html-changebars.xsl
, tento název se pak najde v souboru catalog.xml
a zjistí se, že odpovídá souboru html/changebars.xsl
v adresáři c:/Local/docbook-xsl/1.75.2/
, což má za následek, že ve výsledku budou po stranách čáry tam, kde jsou některé elementy označené jako změněné. Všimněte si, že je tam zakomentovaný import souboru html-docbook.xsl
(dřív jsem ho asi používal a pak jenom zakomentoval), můžete si najít, kterému souboru to ve skutečnosti odpovídá. Dále jsou v souboru nastavení, která ovllivňují chování standardních šablon. O nastavení šablon se dozvíte v [10].
Obdobným způsobem si můžete připravit svoje vlastní šablony pro XHTML a PDF výstup. Příslušné příkazy pak budou make xhtml a make pdf.
Moje soubory vypadají takto:
Soubor $WORK/custom_xsl/xhtml/docbook.xsl
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook" exclude-result-prefixes="d" version="1.0"> <!-- <xsl:import href="xhtml-docbook.xsl"/> --> <xsl:import href="xhtml-changebars.xsl"/> <xsl:param name="paper.type" select="'A4'"/> <xsl:param name="section.autolabel" select="1"/> <xsl:param name="pixels.per.inch" select="150"/> </xsl:stylesheet>Soubor
$WORK/custom_xsl/fo/docbook.xsl
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:import href="fo-docbook.xsl"/> <xsl:param name="paper.type" select="'A4'"/> <xsl:param name="section.autolabel" select="1"/> <xsl:param name="fop1.extensions" select="1"/> </xsl:stylesheet>Pokud budete používat PDF výstup, všimněte si v
Makefile
, že překlad je opravdu dvoufázový, nejdřív se vytvoří soubor s formátovacími objekty a potom teprve PDF.
Tak to by bylo všechno.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.