什么是建议的工具链格式化,XML DocBook?[关闭]
-
02-07-2019 - |
题
我已经看到了 最好的工具DocBook XML文件, 但我的问题略有不同。这是目前建议的格式的工具--而不是编辑工具-XML DocBook?
在埃里克*雷蒙德的 '技术的Unix编程' 从2003年起(一个很好的书!), 该建议是XML-FO(XML格式的目的),但是因为我已经看到建议在这里指出,XML-FO不再在制(虽然我不能再找到这个问题上的计算器,因此,也许这是错误的).
假设我是主要感兴趣的Unix/Linux(包括mac os X),但是我不会自动无视窗-唯一的解决办法。
是 Apache FOP 最好的方式去?是否有任何选择吗?
解决方案
我在cygwin下用DocBook做了一些手工编写,用来制作One Page HTML,Many Pages HTML,CHM和PDF。
我安装了以下内容:
- docbook 样式表(xsl)存储库。
- xmllint,测试xml是否正确。
- xsltproc,用样式表处理xml。
- Apache的fop ,以生成PDF文件。我确保添加已安装的文件夹到了道路。
- Microsoft的 HTML Help Workshop ,生产CHM。我确保将已安装的文件夹添加到PATH。 醇>
编辑:在下面的代码中我使用了超过2个文件。如果有人想要清理版本的脚本和文件夹结构,请与我联系:guscarreno(squiggly / at)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
自动生成上述文件输出。
我更喜欢使用nix方法编写脚本,因为工具集更容易查找和使用,更不用说链接了。
其他提示
我们使用 XMLmind XmlEdit 进行编辑,并使用Maven的 docbkx 插件,用于在构建期间创建输出。有关一组好的模板,请查看 Hibernate 或 Spring 提供。
对于HTML输出,我使用xSLT处理器xsltproc的 Docbook XSL样式表。
对于PDF输出,我使用 dblatex ,转换为LaTeX,然后使用pdflatex将其编译为PDF 。 (之前我使用过Jade,DSSSL样式表和jadetex。)
我们使用
- Serna XML编辑
- 日食(普通xml编辑,主要用于由技术人)
- 自己的具体蚀插在(只是为我们的释放笔记)
- 家docbkx插件
- 家罐的具体企业的样式表中,基于标准的docbook的风格表
- 玛文件转换csv DocBook表
- 玛文件提取帐号数据和创建一个DocBook部分从它
- 哈德森(来产生的PDF格式文档(s))
- 关系到部署创建的PDF文档
一些想法,我们有:
部署各版本的产品不仅PDF,但还原始完成DocBook文件(作为我们部分编写的文件,部分产生)。保存完整DocBook文件使得他们独立的变化系统设置的未来。这意味着,如果系统变化,从其内容是提取的(或者代替差异。系统)我们将不能够产生确切的内容的任何更多。这可能会引起一个问题,如果我们需要重新释(有不同的风格表)整个产品ranche的手册。相同的罐子;这些汇编Java类也放在联系(你不想要它们存放在你的SCM);这个我们也会有所产生的DocBook文件。
更新:
创建了一个新鲜的 家HTML更清洁的插件, ,这使得有可能 添加DocBook内容向一个家项目的网站 (测试版本可用)。反馈意见是值得欢迎通过 公开讨论 论坛。
DocBook样式表,加上FOP,效果很好,但我最终决定使用RenderX,它更彻底地涵盖了标准,并且有一些很好的扩展,DocBook样式表可以利用它们。
Bob Stayton的书, DocBook XSL:完整指南,描述了几个备用工具链,包括在Linux或Windows上运行的那些(几乎可以肯定是MacOS,虽然我没有亲自使用过Mac)。
一种流行的方法是使用 DocBook XSL样式表。
关于Apache的FOP问题:当我们建立工具链时(类似于Gustavo建议的那样),我们使用 RenderX XEP引擎。 XEP的输出看起来更加精致,据我所知,FOP在表格上存在一些问题(这是几年前的情况,但这可能已经改变了。)
通过FOP,您可以获得某人认为他们想要实施的功能。我会说没有一个认真对待出版的人会在制作中使用它。您最好使用RenderX或Antenna House或 Arbortext 。 (我在过去十年的实施项目中都使用过它们。)这取决于您的业务需求,您希望自动化的程度,以及您的团队的技能,时间和资源。这不仅仅是一个技术问题。
如果你在红帽子,Ubuntu,或者窗,你可以看看在税吏,这应该是一个相当完整的命令行工具.红帽使用很广泛。
- Wiki: https://fedorahosted.org/publican/
- 医生在这里: http://jfearn.fedorapeople.org/Publican/
- Source tarball和前男友在这里: https://fedorahosted.org/releases/p/u/publican/
名为 DocBook工具链的文章可能有用好。它是由Eric Raymond撰写的DocBook上的 HOWTO 的一部分
我一直使用两个CLI工具,用于简化我docbook工具:xmlto和税吏.
税吏看起来很优雅的给我但是不够安装在&Redhat出版物的需求。
我的释放/am工作在一个开放源码项目称为书店这是一个获取并安装一个完整的Docbook-XSL管道/工具.它包括一切所需的创建和编辑Docbook源的文件和出不同的格式(目前的pdf和epub,并迅速增长).
我的目标是要使它能够从零到出口(pdf格式或任何),从你的Docbook源在10分钟。
该摘要:
书店是一个开放源码软件的红宝石框架docbook工具的幸福和可持续生产率。该框架进行了优化,以帮助开发人员快速提升,使他们能够更迅速跳和发展他们的DocBook-输出流,通过有利于《公约》在配置、设置与最佳做法、标准和工具。
这里是宝石的位置: https://rubygems.org/gems/bookshop
我更喜欢在我的大部分内容创建中使用Windows(Notepad ++编辑器)。 Linux中的Publican是一个很好的工具链,可以创建良好的文档结构和流程输出。我在我的Windows机器和Virtual Linux机器上使用Dropbox(还有其他文档共享服务,它应该可以在两个平台上运行良好)。 通过这种设置,我已经能够实现一个对我有用的组合。 一旦在Windows中完成编辑工作(立即与Linux机器同步),我就切换到Linux运行publican构建并创建HTML和PDF输出,这些输出也会在我的Windows文件夹中由Dropbox更新。