Portál AbcLinuxu, 24. října 2025 15:46
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.