24

DocBook XMLドキュメントを操作するための最良のツールを見てきましたが、私の質問は少し異なります。XML DocBookに対して、編集ツールではなく、現在推奨されているフォーマットツールチェーンはどれですか?

2003年のEricRaymondの「TheArtofUnix Programming」(優れた本です!)では、提案はXML-FO(XML Formatting Objects)ですが、XML-FOが開発中ではないことを示す提案をここで見ました。 (StackOverflowでその質問を見つけることができなくなったので、おそらくそれは誤りでした)。

私が主にUnix/Linux(MacOS Xを含む)に興味があると仮定しますが、Windowsのみのソリューションを自動的に無視することはありません。

ApacheのFOPは最善の方法ですか?代替案はありますか?

4

13 に答える 13

14

私は、cygwin の下で DocBook を使用して手動で作成し、One Page HTML、Many Pages HTML、CHM、および PDF を作成してきました。

私は以下をインストールしました:

  1. docbookスタイルシート (xsl) リポジトリ。
  2. xmllint を使用して、xml が正しいかどうかをテストします。
  3. xsltproc、スタイルシートで xml を処理します。
  4. PDFを生成するためのApacheのfop 。インストールされたフォルダーを必ずPATHに追加してください。
  5. CHM を作成するための Microsoft のHTML Help Workshop 。インストールしたフォルダを必ずPATHに追加してください。

編集:以下のコードでは、2 つ以上のファイルを使用しています。スクリプトとフォルダ構造のクリーンアップ バージョンが必要な場合は、私に連絡してください: guscarreno (squiggly/at) googlemail (period/dot) 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 アプローチを使用することを好みます。それは、ツールセットがより見つけやすく、使用しやすく、連鎖しやすいことは言うまでもありません。

于 2008-09-23T18:40:46.950 に答える
7

を使用しております

  • SernaXMLエディター
  • Eclipse(単純なxml編集、主に技術者が使用)
  • 独自のEclipseプラグイン(リリースノート用)
  • Mavendocbkxプラグイン
  • 標準のDocbookスタイルシートに基づく特定の企業スタイルシートを備えたMavenjar
  • csvをDocBookテーブルに変換するためのMavenプラグイン
  • BugZillaデータを抽出し、そこからDocBookセクションを作成するためのMavenプラグイン
  • ハドソン(PDFドキュメントを生成するため)
  • 作成されたPDFドキュメントを展開するNexus

私たちが持っているいくつかのアイデア:

各製品バージョンで、PDFだけでなく、元の完全なDocBookドキュメントもデプロイします(ドキュメントの一部を作成し、一部を生成するため)。完全なDocBookドキュメントを保存すると、将来のシステム設定の変更に対して独立したものになります。つまり、コンテンツが抽出された(またはdiff。systemsに置き換えられた)システムが変更された場合、正確なコンテンツを生成できなくなります。製品全体のマニュアルを(異なるスタイルシートで)再リリースする必要がある場合は、問題が発生する可能性があります。瓶と同じです。これらのコンパイルされたJavaクラスもNexusに配置されます(SCMに保存したくない場合)。これは、生成されたDocBookドキュメントでも行います。

アップデート:

FreshはMavenHTMLCleaner Plug-inを作成しました。これにより、DocBookコンテンツをMavenプロジェクトサイトに追加できます(ベータ版が利用可能)。フィードバックは、オープンディスカッションフォーラムを通じて歓迎されます。

于 2010-01-29T20:52:19.853 に答える
7

編集にはXMLmind XmlEditを使用し、ビルド中に出力を作成するにはMaven のdocbkxプラグインを使用します。優れたテンプレートのセットについては、HibernateまたはSpringが提供するテンプレートを参照してください。

于 2009-05-17T17:25:57.020 に答える
7

HTML 出力には、Docbook XSL スタイルシートと XSLT プロセッサ xsltproc を使用します。

PDF 出力には、 LaTeX に変換するdblatexを使用し、pdflatex を使用して PDF にコンパイルします。(以前は Jade、DSSSL スタイルシート、および jadetex を使用していました。)

于 2009-05-18T19:19:59.267 に答える
4

DocBook スタイルシートと FOP はうまく機能しますが、最終的には RenderX を採用することに決めました。RenderX は、標準をより完全にカバーし、DocBook スタイルシートが利用する優れた拡張機能を備えています。

Bob Stayton の著書DocBook XSL: The Complete Guideでは、Linux や Windows で動作するツール チェーンを含むいくつかの代替ツール チェーンについて説明しています (個人的に Mac を使用したことはありませんが、ほぼ確実に MacOS でも動作します)。

于 2008-11-05T18:24:54.983 に答える
3

Apache の FOP に関する質問について: ツールチェーンを確立したとき (Gustavo が提案したものと同様)、RenderX XEP エンジンを使用して非常に良い結果が得られました。XEP の出力はもう少し洗練されたように見えます。私が思い出す限り、FOP にはテーブルに関するいくつかの問題がありました (これは数年前のことですが、これは変更されている可能性があります)。

于 2008-09-23T19:49:47.567 に答える
3

一般的なアプローチは、DocBook XSL Stylesheetsを使用することです。

于 2008-09-23T18:24:11.233 に答える
3

FOP を使用すると、誰かが実装するのに十分なほど悪いと判断した機能を取得できます。パブリッシングに真剣に取り組んでいる人で、本番環境で使用する人はいないと思います。RenderX または Antenna House またはArbortextを使用すると、はるかに優れた結果が得られます。(私は過去 10 年間の実装プロジェクト全体でそれらを使用してきました。) それは、ビジネス要件、自動化する範囲、チームのスキル、時間、およびリソースがどのようなものかによって異なります。これは単なるテクノロジーの問題ではありません。

于 2010-03-08T17:44:26.010 に答える
3

If you're on Red Hat, Ubuntu, or Windows, you could take a look at Publican, which is supposed to be a fairly complete command line toolchain. Red Hat uses it extensively.

于 2010-06-12T22:15:08.250 に答える
3

The DocBook toolchainという記事も役に立つかもしれません。これは、 Eric Raymond によって書かれた DocBookのHOWTOのセクションです。

于 2012-05-24T23:31:51.030 に答える
3

docbook ツールチェーンを簡素化するために、xmlto と publican という 2 つの CLI ユーティリティを使用しています。

Publican は私にはエレガントに見えますが、Fedora と Redhat のパブリケーションのニーズには十分に適合しています。

于 2012-10-22T20:22:45.313 に答える
2

完全な Docbook-XSL パイプライン/ツールチェーンをインストールする RubyGem である bookshop と呼ばれるオープンソース プロジェクトをリリースしています/取り組んでいます。Docbook ソース ファイルの作成と編集、およびさまざまな形式 (現在は pdf と epub、急速に拡大中) の出力に必要なすべてが含まれています。

私の目標は、10 分以内に Docbook ソースからゼロからエクスポート (pdf など) に移行できるようにすることです。

サマリー:

bookShop は、docbook ツールチェーンの幸福と持続可能な生産性のための OSS ruby​​ ベースのフレームワークです。このフレームワークは、開発者が迅速に立ち上げられるように最適化されており、構成よりも規則を優先し、最初からベスト プラクティス、標準、およびツールを使用してセットアップすることで、DocBook から出力へのフローにすばやく飛び込んで開発できるようにします。 .

gem の場所は次のとおりです: https://rubygems.org/gems/bookshop

そしてソースコード: https://github.com/blueheadpublishing/bookshop

于 2011-03-28T21:20:20.020 に答える