Portál AbcLinuxu, 30. dubna 2025 12:52

DocBook (update)

28.3.2005 16:15 | Přečteno: 3756× | Linux | poslední úprava: 28.3.2005 20:54

Ještě donedávna jsem své "návody" a různé jiné texty psal jako html soubory aby se snado strkaly na web. Delší dobu jsem přemýšlel o tom jak to převést do pdf případně jiného formátu. Konečně jsem se odhodlal a podíval se na DocBook.

O DocBooku samozřejmě vím delší dobu, ale ještě jsem ho nějak aktivněji nepoužíval. Docela pěkným startem je stránka Jiřího Koska, kde najdete stručný úvod do problematiky. DocBook si samozřejmě nese dokumentaci s sebou, takže po nainstalování (nebo spíš rozbalení) najdete v adresáři doc docela zajímavé počtení. Domácí stránka projektu DocBook obsahuje spoustu zajímavých věcí.

Na začátu jsem zkoušel Jade a DSSSL, ale výstup do html nebyl zrovna 2x pěkný a tak jsem se zaměřil na XSL styly. Pro práci s XSL jsem si zvolil nástroj xsltproc. Zkoušel jsem i Saxon, ale nelíbí se mi. Nakonec jsem si ještě trochu poupravil šablonu pro generování html kódu a už jsem skoro spokojený. Teď budu řešit výstup do rtf a pdf. Pdf se mi docela daří, ale to rtf zlobí :-(

Pro generování vícestránkové verze html (u knihy dělí podle kapitol) používám následující parametry:

xsltproc xhtml-chunk.xsl dokument.xml
a pro generování jednostránkové verze (celý výsledek je jeden html soubor)
xsltproc xhtml-onechunk.xsl dokument.xml
Obsah souborů xhtml-onechunk.xsl a xhtml-chunk.xsl:
xhtml-onechunk.xsl
<?xml version="1.0" encoding="iso-8859-2"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/onechunk.xsl"/>
<xsl:include href="xhtml-common.xsl"/>

</xsl:stylesheet>

xhtml-chunk.xsl
<?xml version="1.0" encoding="iso-8859-2"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
<xsl:include href="xhtml-common.xsl"/>
</xsl:stylesheet>
Jak jste si jistě všimli, tak se vkládá soubor xhtml-common.xsl, jeho obsah je:
<?xml version="1.0" encoding="iso-8859-2"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">
<!-- Úpravy parametrů -->
<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
<!-- Mají se používat rozšíření -->
<xsl:param name="use.extensions" select="1"/>
<!-- Vypneme podporu pro rozsireni tabulek -->
<xsl:param name="tablecolumns.extension" select="0"/>
<!-- Mají se sekce automaticky číslovat -->
<xsl:param name="section.autolabel" select="1"/>
<!-- Mají čísla sekcí obsahovat i čísla kapitol -->
<xsl:param name="section.label.includes.component.label" select="1"/>
<!-- Mají se číslovat kapitoly -->
<xsl:param name="chapter.autolabel" select="1"/>
<!-- Použijeme námi definovaný CSS-->
<xsl:param name="html.stylesheet">docbook.css</xsl:param>
<xsl:param name="html.stylesheet.type">text/css</xsl:param>
<xsl:param name="generate.id.attributes" select="1"></xsl:param>
<xsl:param name="make.valid.html" select="1"></xsl:param>
<xsl:param name="generate.meta.abstract" select="1"></xsl:param>
</xsl:stylesheet>
Možná tam jsou nějaké nesmysly, ale funguje to podle mých představ.

Zkoušel jsem na editaci souboru používat XMLmind, ale to se mi moc nelíbilo, tak jsem se vrátil zpět k gVimu. Protože gVim nekontroluje validitu XML, používám na kontrolu príma nástroj xmllint.

xmllint --noout --valid xmlsoubor.xml

Update:

Tak mi nakonec funguje i výstup do RTF a PS (PDF). Použil jsem jade (který se mi nelíbil pro html) a výstupy jsou dokonce kompletně s diakritikou. Z DocBooku generuju přímo RTF. Pro generování používám příkaz:

jade -d ~/.docbook/dsssl/print/docbook.dsl\
 -t rtf /usr/share/OpenSP/xml.dcl dokument.xml
Pro generování PS a PDF používám tento postup:
jade -d ~/.docbook/dsssl/print/docbook.dsl -t tex\
 -V tex-backend /usr/share/OpenSP/xml.dcl dokument.xml
jadetex dokument.tex
jadetex dokument.tex
jadetex dokument.tex
dvips dokument.dvi
dvipdf dokument.dvi
Samozřejmě tam tyhle obludnosti neťukám ručně, ale mám na to Makefile.

       

Hodnocení: -

zatím nehodnoceno
        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Marek Bernát avatar 28.3.2005 17:11 Marek Bernát | skóre: 17 | blog: Arcadia
Rozbalit Rozbalit vše vim + xml
Odpovědět | Sbalit | Link | Blokovat | Admin
Neviem ako velmi mas rad vim, ale ja osobne by som needitoval nicim inym, to je skoro ako svatokradez ;-)
Takze link ako na to, ak by mal niekto zaujem: vim as xml editor
physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.