`
intl-bcds
  • 浏览: 79780 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

docbook——不错的文档编辑格式

阅读更多
Edit by King      

docbook是什么?它既不是一个文档标准,也不是一个文档编辑器,它仅仅是一份XML文档。docbook通过DTD(scheme)来规范一个XML文档,并且根据这些标签,通过xslt将XML转换成可视化程度更高、使用范围更加广泛的文档(如html, chm, pdf等)。

      以前编辑文档的时候,总是会遇到页面样式的问题。在写文档本身的时候,还要顾及到文档的最后展示的样子,在不断编写文本的时候,需要同时调整格式。使用docbook最大的好处,就在于内容和页面样式完全分离,在编辑的使用,只需要使用标准的标签,不用过多的考虑使用的样式。而这些标签在转换后,都会变成对应的class,直接通过css来改变整体的样式。

      还有一个问题,就是文档保存的格式,有的人习惯查看chm的文档,有的人则喜欢chm格式,或者是html格式(如果在服务器上分发)。docbook作为XML格式的文本,就很好的充当了这些格式的中间状态,通过xslt,可以很方便的转换成其他格式(不过pdf在中文显示上有点问题)。而且,docbook的标签本身就具备可读性。

      说了这么多关于docbook的东西,简单来介绍下写法。(推荐看下《DocBook : The Definitive Guide》这本书。)docbook中最基本的几个标签,就是<book></book>标签,表示一本书,<chapter></chapter>标签用来表示章节。这里再说一个它的有点,就是所有的有序序列(如章节序列、有序列表、小节序列)都不用关注序列编码,在进行xslt转换的时候会自动进行编码。

      文档中,很多地方都可能会引用源代码,docbook有<programlisting>标签,可以指定一个language属性。这个属性在进行标准的xslt的时候,不能被正常的转换,需要使用扩展的xslt进行转换。我平时使用xslthl来进行转换,可以支持ini, c, c++, java, xml等语言的高亮。同时可以修改xsl文件,来指定对应属性的高亮(如关键字、属性、注释)颜色。

     docbook能够使用的标签有很多,可以去网上慢慢找下(不过不幸的是,官方网站http://www.docbook.org/ 貌似被墙,需要使用代理了)。平时真正使用到的,除了前面说到的,可能也只有para, example, sect1等。最后贴下目前使用的xsl文件(首先需要下载docbook提供的xsl文件,这里展示的基本都是对原文件的配置):

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xslthl="http://xslthl.sf.net"
exclude-result-prefixes="xslthl"
version="1.0">

<!--调用样式表-->
<xsl:import href="/usr/share/xml/docbook/stylesheet/nwalsh5/current/html/docbook.xsl"/>

<xsl:param name="chunker.output.encoding" select="'utf-8'"/> 
<!--标准信息所使用的语言-->
<xsl:param name="l10n.gentext.language" select="'zh_cn'"/>
<!--指定样式表-->
<xsl:param name="html.stylesheet" select="'docbook.css'"/>
<!--对于警告类信息是否使用图形 0 1-->
<xsl:param name="admon.graphics" select="1"/>

<xsl:param name="highlight.source" select="1"/>

<xsl:param name="base.dir" select="'target/single/'"/>

<!--生成的 HTML 文件内容是否进行缩排 yes no-->
<xsl:param name="chunker.output.indent" select="'yes'"/>
<!--给节编号 0 1-->
<xsl:param name="section.autolabel" select="1"/>
<!--节的编号是否包含章的编号 0 1-->
<xsl:param name="section.label.includes.component.label" select="1"/>
<!--表格边框的属性是否使用预设 CSS 来指定-->
<xsl:param name="table.borders.with.css" select="0"/>
<!--参考书目是否进行编号-->
<xsl:param name="bibliography.numbered" select="1"></xsl:param>


<!--目录深度-->
<xsl:param name="toc.max.depth" select="2"/>
<!--sect#页面上显示目录-->
<xsl:param name="generate.section.toc.level" select="0"/>
<!--sect#可以生成目录条目-->
<xsl:param name="toc.section.depth" select="2"/>
<!--目录中收录哪些内容-->
<!--包括 toc,title,figure,table,example,equation -->
<!-- nop 为空 -->
<xsl:param name="generate.toc">
appendix  toc
article/appendix  nop
article   toc,title
book      toc,title,example
chapter   toc,title
part      toc,title
preface   toc,title
qandadiv  toc
qandaset  toc
reference toc,title
sect1     toc
sect2     toc
sect3     toc
sect4     toc
sect5     toc
section   toc
set       toc,title
</xsl:param>

<!--在源码中插入 <?linebreak?> 标记,生成 Html 时替换为<br> -->
<xsl:template match="processing-instruction('linebreak')">
<br/>
</xsl:template>

<xsl:template match="xslthl:string" mode="xslthl">
<b class="hl-string"><xsl:apply-templates mode="xslthl"/></b>
</xsl:template>

<xsl:template match="xslthl:comment" mode="xslthl">
<i class="hl-comment" ><xsl:apply-templates mode="xslthl"/></i>
</xsl:template>

<xsl:template match="xslthl:directive" mode="xslthl">
<span class="hl-directive" style="color: maroon"><xsl:apply-templates mode="xslthl"/></span>
</xsl:template>

<xsl:template match="xslthl:tag" mode="xslthl">
<b class="hl-tag" style="color: #000096"><xsl:apply-templates mode="xslthl"/></b>
</xsl:template>

<xsl:template match="xslthl:attribute" mode="xslthl">
<span class="hl-attribute" style="color: #F5844C"><xsl:apply-templates mode="xslthl"/></span>
</xsl:template>

<xsl:template match="xslthl:value" mode="xslthl">
<span class="hl-value" style="color: #993300"><xsl:apply-templates mode="xslthl"/></span>
</xsl:template>

<xsl:template match="xslthl:html" mode="xslthl">
<b><i style="color: red"><xsl:apply-templates mode="xslthl"/></i></b>
</xsl:template>

<xsl:template match="xslthl:xslt" mode="xslthl">
<b style="color: #0066FF"><xsl:apply-templates mode="xslthl"/></b>
</xsl:template>

<!-- Not emitted since XSLTHL 2.0 -->
<xsl:template match="xslthl:number" mode="xslthl">
<span class="hl-number"><xsl:apply-templates mode="xslthl"/></span>
</xsl:template>

<xsl:template match="xslthl:annotation" mode="xslthl">
<i><span class="hl-annotation"><xsl:apply-templates mode="xslthl"/></span></i>
</xsl:template>

<!-- Not sure which element will be in final XSLTHL 2.0 -->
<xsl:template match="xslthl:doccomment|xslthl:doctype" mode="xslthl">
<b class="hl-tag" style="color: blue"><xsl:apply-templates mode="xslthl"/></b>
</xsl:template>

</xsl:stylesheet>   
分享到:
评论

相关推荐

    DocBook文档

    docbook - the definitive guide Writing documentation using DocBook

    DocBook文档管理工具

    DocBook is a very popular set of tags for describing books, articles, and other prose documents, particularly technical documentation. DocBook is defined using the native DTD syntax of SGML and XML. ...

    DocBook

    关于的DocBook的资料, 本人看过,觉得很不错,讲解很详细,应该对想学习DocBook的人有些帮助

    docbook 指南

    docbook 有关xml格式的文档说明。有需求的可以参考,非常不错。

    DocBook5安装文件

    1 docbook-xsl-ns-1.75.2.zip解压到D:\docbook 2 另外四个压缩包解压出来,把里面的bin,include和lib三个文件夹拷贝到D:\docbook\xsltproc目录下 2 环境变量Path中增加 D:\docbook\xsltproc\bin 3 新建一个bat,...

    DocBook学习笔记

    DocBook 是一种模式(在多种语言下可用,包括RELAX NG、SGML 和 XML DTDs ,以及 W3C XML 模式),它由OASIS 的DocBook 技术委员...全世界有许多组织将 DocBook 用于数百万页的文档,这些文档有不同的打印和在线格式。

    DocBook:权威指南DocBook: The Definitive Guide

    DocBook DTD的官方文档。 设计为对DocBook DTD的清晰,简洁,规范的参考。

    Writing Documentation Using DocBook

    英文名称:Writing Documentation Using DocBook 中文名称:Docbook写作指南 DocBook提供了一个使用SGML/XML...DocBook已经被Linux、FreeBSD等众多的项目制定作为文档撰写格式,并且有越来越多的组织和个人开始使用。

    linux-3.2.4内核帮助文档DocBook

    内核API 内核帮助文档 DocBook Linux编程

    DocBook.5.0权威指南

    DocBook.5.0权威指南 DocBook 是非常流行的标记集合,用来描述书籍、论文,和其它文档,尤其是技术文档。 DocBook 是用 RELAX NG 方案和图解定义的 XML 词汇模型。

    windows下配置docbook

    windows下配置docbook 完整版教程,非常详细。我试了可以 本文主要介绍了Docbook开发过程中,遇到的环境搭建,常见问题以及解决办法,以及其他一些注意事项和基本 知识点

    docbook2asciidoc, 将DocBook转换为AsciiDoc的XSL.zip

    docbook2asciidoc, 将DocBook转换为AsciiDoc的XSL 这是将 DocBook 4.5转换为 AsciiDoc插件的样式表,最初由 bjepson 启动。依赖项这个项目有一个模块 ( https://github.com/oreillymedia/docbook2htmlbook ) 。

    docbook-xml-4.2.zip

    docbook-xml-4.2.zip docbook-xml-4.2.zip

    DocBook的使用指南(English Version)

    国内DocBook的使用还不普便,主要是相关使用文档,示例太少. 我自己写的一份Quick Reference的DocBook使用指南,希望能对国内DocBook的普及有一点点帮助.

    docbook导出PDF/HTML/RTF/DOCX/ODT格式

    docbook导出PDF/HTML/RTF/DOCX/ODT格式,提供了例子程序(请解压查阅 read me.txt)

    DocBook 5.0中文版

    DocBook 5.0 权威指南,中文版

    DocBook2.6.22.chm

    linux kernel2.6.22 API(DocBook) 采用make htmldocs命令生成,然后用html2chm转为chm

    PHPWeb开发技术指南——pdf格式

    7.2.2 DocBook 183 7.2.3 WML(Wireless Markup Language) 184 7.2.4 RDF—Resource Description Framework 184 7.2.5 XML文档 184 7.2.6 PHP和Expat 190 7.2.7 DOM—Document Object Model 197 7.2.8 LibXML—一个...

    docbook4j:简单的可嵌入 Java 库,能够将 docbook 文档呈现为众所周知的目标格式(html、pdf、man 等)

    该项目的目的是创建一个简单的可嵌入 Java 库,能够将 docbook 文档呈现为众所周知的目标格式(html、pdf、man 等)。 Docbook4j 1.0.1 发布! 见 有关更详细的使用说明/教程,请参阅此博客文章 ( )。 Maven 用户请...

    word转换docbook工具

    word转换docbook工具,把word文档转换成XML文件格式

Global site tag (gtag.js) - Google Analytics