什么是格式化XML的DocBook推荐的工具链? [关闭](What is the recomm

2019-06-27 19:35发布

我见过的最好的工具与DocBook的XML文档的工作 ,但我的问题是稍有不同。 这是目前建议的格式工具链 - 而不是编辑工具 - 对XML的DocBook?

在雷蒙德的“Unix编程艺术”从2003年(一个很好的书!),该建议是XML-FO(XML格式化对象),但因为在这里看到的建议,表示,XML-FO不再是正在开发中我已经(虽然我再也找不到StackOverflow上这个问题,所以也许这是错误的)。

假设我在Unix / Linux操作系统(包括MacOSX)主要兴趣,但我不会自动忽略Windows的唯一解决方案。

是Apache的FOP去的最佳途径? 是否有其它方法吗?

Answer 1:

我一直在做的DocBook有一些手工书写,在Cygwin的,生产单页HTML,多页HTML,CHM和PDF。

我安装了以下内容:

  1. 在DocBook的样式表(XSL)资源库。
  2. xmllint,以测试如果XML是正确的。
  3. xsltproc的,处理与样式表的XML。
  4. Apache的花花公子 ,产生PDF's.I确保已安装的文件夹添加到PATH。
  5. 微软的HTML Help Workshop中 ,产生CHM的。 我一定要安装的文件夹添加到PATH。

编辑 :在下面的代码我使用超过2档以上。 如果有人想脚本和文件夹结构的清理版本,请与我联系:guscarreno(/在波浪)Googlemail电子邮件(周期/点)com

然后我用一个configure.in:

AC_INIT(Makefile.in)

FOP=fop.sh
HHC=hhc
XSLTPROC=xsltproc

AC_ARG_WITH(fop, [  --with-fop  Where to find Apache FOP],
[
    if test "x$withval" != "xno"; then
        FOP="$withval"
    fi
]
)
AC_PATH_PROG(FOP,  $FOP)

AC_ARG_WITH(hhc, [  --with-hhc  Where to find Microsoft Help Compiler],
[
    if test "x$withval" != "xno"; then
        HHC="$withval"
    fi
]
)
AC_PATH_PROG(HHC,  $HHC)

AC_ARG_WITH(xsltproc, [  --with-xsltproc  Where to find xsltproc],
[
    if test "x$withval" != "xno"; then
        XSLTPROC="$withval"
    fi
]
)
AC_PATH_PROG(XSLTPROC,  $XSLTPROC)

AC_SUBST(FOP)
AC_SUBST(HHC)
AC_SUBST(XSLTPROC)

HERE=`pwd`
AC_SUBST(HERE)
AC_OUTPUT(Makefile)

cat > config.nice <<EOT
#!/bin/sh
./configure \
    --with-fop='$FOP' \
    --with-hhc='$HHC' \
    --with-xsltproc='$XSLTPROC' \

EOT
chmod +x config.nice

和Makefile.in:

FOP=@FOP@
HHC=@HHC@
XSLTPROC=@XSLTPROC@
HERE=@HERE@

# Subdirs that contain docs
DOCS=appendixes chapters reference 

XML_CATALOG_FILES=./build/docbook-xsl-1.71.0/catalog.xml
export XML_CATALOG_FILES

all:    entities.ent manual.xml html

clean:
@echo -e "\n=== Cleaning\n"
@-rm -f html/*.html html/HTML.manifest pdf/* chm/*.html chm/*.hhp chm/*.hhc chm/*.chm entities.ent .ent
@echo -e "Done.\n"

dist-clean:
@echo -e "\n=== Restoring defaults\n"
@-rm -rf .ent autom4te.cache config.* configure Makefile html/*.html html/HTML.manifest pdf/* chm/*.html chm/*.hhp chm/*.hhc chm/*.chm build/docbook-xsl-1.71.0
@echo -e "Done.\n"

entities.ent: ./build/mkentities.sh $(DOCS)
@echo -e "\n=== Creating entities\n"
@./build/mkentities.sh $(DOCS) > .ent
@if [ ! -f entities.ent ] || [ ! cmp entities.ent .ent ]; then mv .ent entities.ent ; fi
@echo -e "Done.\n"

# Build the docs in chm format

chm:    chm/htmlhelp.hpp
@echo -e "\n=== Creating CHM\n"
@echo logo.png >> chm/htmlhelp.hhp
@echo arrow.gif >> chm/htmlhelp.hhp
@-cd chm && "$(HHC)" htmlhelp.hhp
@echo -e "Done.\n"

chm/htmlhelp.hpp: entities.ent build/docbook-xsl manual.xml build/chm.xsl
@echo -e "\n=== Creating input for CHM\n"
@"$(XSLTPROC)" --output ./chm/index.html ./build/chm.xsl manual.xml

# Build the docs in HTML format

html: html/index.html

html/index.html: entities.ent build/docbook-xsl manual.xml build/html.xsl
@echo -e "\n=== Creating HTML\n"
@"$(XSLTPROC)" --output ./html/index.html ./build/html.xsl manual.xml
@echo -e "Done.\n"

# Build the docs in PDF format

pdf:    pdf/manual.fo
@echo -e "\n=== Creating PDF\n"
@"$(FOP)" ./pdf/manual.fo ./pdf/manual.pdf
@echo -e "Done.\n"

pdf/manual.fo: entities.ent build/docbook-xsl manual.xml build/pdf.xsl
@echo -e "\n=== Creating input for PDF\n"
@"$(XSLTPROC)" --output ./pdf/manual.fo ./build/pdf.xsl manual.xml

check: manual.xml
@echo -e "\n=== Checking correctness of manual\n"
@xmllint --valid --noout --postvalid manual.xml
@echo -e "Done.\n"

# need to touch the dir because the timestamp in the tarball
# is older than that of the tarball :)
build/docbook-xsl: build/docbook-xsl-1.71.0.tar.gz
@echo -e "\n=== Un-taring docbook-xsl\n"
@cd build && tar xzf docbook-xsl-1.71.0.tar.gz && touch docbook-xsl-1.71.0

实现自动化生产上述文件输出。

我更喜欢使用尼克斯方法对脚本仅仅因为工具箱更容易查找和使用,更何况更容易链。



Answer 2:

我们使用XMLmind XmlEdit编辑和Maven的docbkx插件在我们构建创建输出。 对于一套好的模板来看看的那些休眠或春提供。



Answer 3:

对于HTML输出,我用的是DocBook XSL样式表用XSLT处理器xsltproc的。

对于PDF输出,我用dblatex ,转化为LaTeX的,然后使用pdflatex将其编译为PDF。 (I之前使用玉,DSSSL样式表和JadeTeX能)。



Answer 4:

我们用

  • 塞尔纳XML编辑器
  • 蚀(纯XML编辑,主要用于由技术人员)
  • 自己特定的Eclipse插件(只是我们关于release-notes)
  • Maven的docbkx插件
  • 行家罐子特定企业的样式表,基于标准的DocBook样式表
  • Maven的插件转换CSV成DocBook表
  • 的Maven插件用于提取Bugzilla的数据,并从它创建一个DocBook节
  • 哈德森(生成PDF文件(S))
  • 的Nexus部署创建的PDF文档

一些想法,我们有:

每一个产品版本不仅是PDF,而且原始的完整DocBook文档部署(如我们写部分文档和部分生成)。 保存完整的DocBook文档使他们独立于在未来的系统设置改变。 也就是说,如果该系统的变化,从中提取的内容(或DIFF系统所取代。),我们将不能够产生准确的内容了。 这可能会导致一个问题,如果我们需要重新发布(使用不同的样式表)手册的整个产品ranche。 同与罐; 这些编译的Java类也放置在的Nexus(你不希望将它们存储在您的SCM); 由此我们也将做与生成的DocBook文档。

更新:

新鲜创建一个Maven HTML清理插件 ,这使得它能够DocBook的内容添加到一个Maven项目网站 (提供Beta版)。 反馈是在欢迎的公开讨论论坛。



Answer 5:

DocBook的样式,加上维克多,工作不错,但我最后还是决定去春来的RenderX,这更彻底覆盖标准,并具有DocBook的样式利用的一些不错的扩展。

鲍勃·斯泰顿的书, 的DocBook XSL:完全指南 ,介绍了几种替代的工具链,包括那些在Linux或Windows上工作(几乎可以肯定的MacOS,太,虽然我没有亲自使用的是Mac)。



Answer 6:

一个流行的方法是使用DocBook XSL样式表 。



Answer 7:

至于有关Apache的FOP的问题:当我们建立了我们的工具链(类似于古斯塔沃已经建议),我们使用了非常不错的成绩RenderX XEP引擎 。 XEPs输出看起来更精致一点,而据我记得,FOP有一些问题与表(这是前几年虽然,这可能会改变)。



Answer 8:

随着FOP你得到的功能,有人决定要坏到足以实现。 我会说,没有谁是认真的出版使用它在生产。 你好得多与RenderX或天线众议院或Arbortext的 。 (我用他们都在过去十年中的价值实现的项目。)这取决于你的业务需求,你要多少自动化,和你的团队的技能,时间和资源是什么样的为好。 这不只是一个技术问题。



Answer 9:

如果你在Red Hat,Ubuntu的,或Windows,你可以看看税吏,这应该是一个相当完整的命令行工具链。 红帽使用它广泛。

  • 维基这里: https://fedorahosted.org/publican/
  • 文件位置: http://jfearn.fedorapeople.org/Publican/
  • 源码包,并在这里EXE文件: https://fedorahosted.org/releases/p/u/publican/


Answer 10:

文章叫做DocBook的工具链可能是有用的。 这是一个的部分HOWTO由雷蒙德写在DocBook的。



Answer 11:

我一直在用两个CLI utils的,简化的docbook我的工具链:xmlto和税吏。

税吏外型优雅给我,但足够用于安装Fedora的和红帽发布的需求。

  • https://fedorahosted.org/xmlto/
  • https://fedorahosted.org/publican/


Answer 12:

我松开/我上的开源项目叫做书店这是安装一个完整的Docbook-XSL管道/工具链RubyGem工作。 它包括创建和编辑DocBook的源文件和输出格式不同(目前的PDF和EPUB,并迅速成长)所需的一切。

我的目标是使人们有可能从零到出口去(PDF文件或其他)从您的Docbook源在10分钟内。

摘要:

书店是DocBook的工具链的幸福和可持续生产力的基于Ruby的OSS框架。 该框架进行了优化,以帮助开发人员快速斜坡上升,使他们能够更迅速地跳,并培养他们的DocBook到输出流,以有利于约定优于配置,从一开始就设定他们与最佳实践,标准和工具。

这里的宝石位置: https://rubygems.org/gems/bookshop

和源代码: https://github.com/blueheadpublishing/bookshop



Answer 13:

我更喜欢使用Windows我的大多数内容创建(记事本++编辑器)的。 收税在Linux是一个很好的工具链创造了良好的文档的结构和过程输出。 我在我的Windows机器以及虚拟Linux机器上使用Dropbox的(也有其他的文件共享服务,以及,它应该在两个平台上运行良好)。 有了这个设置,我已经能够实现,对我的伟大工程的结合。 一旦编辑工作在Windows(这立即同步到Linux机器)完成了,我改用Linux来运行税吏构建和创建HTML和PDF输出,而这又是在由Dropbox的我的Windows文件夹中进行更新。



文章来源: What is the recommended toolchain for formatting XML DocBook? [closed]