XML DocBook のフォーマットに推奨されるツールチェーンは何ですか?[閉まっている]
-
02-07-2019 - |
質問
私は見た DocBook XML ドキュメントを操作するための最適なツール, しかし、私の質問は少し異なります。XML DocBook に対して編集ツールではなく、現在推奨されている書式設定ツールチェーンはどれですか?
エリック・レイモンドの中で 「Unix プログラミングの芸術」 2003 年の本 (素晴らしい本です!) では、XML-FO (XML Formatting Objects) が提案されていますが、それ以来、XML-FO は開発中ではないことを示す提案をここで目にしました (ただし、その質問はもう見つかりません)。 StackOverflow なので、間違っていた可能性があります)。
私が主に Unix/Linux (MacOS X を含む) に興味があると仮定しますが、Windows のみのソリューションを自動的に無視するわけではありません。
は ApacheのFOP 最善の方法は?代替手段はありますか?
解決
私は、cygwin 上で DocBook を使用して手動で書き込みを行って、1 ページの HTML、多ページの HTML、CHM、および PDF を作成しました。
次のものをインストールしました。
- の ドックブック スタイルシート (xsl) リポジトリ。
- xmllint、xml が正しいかどうかをテストします。
- xsltproc: スタイルシートを使用して XML を処理します。
- Apache のホップ, PDF を生成します。インストールしたフォルダーを必ず PATH に追加します。
- マイクロソフトの HTMLヘルプワークショップ, 、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
上記のファイル出力の生成を自動化します。
私はスクリプトに対して nix アプローチを使用することを好みます。その理由は、ツールセットがより見つけやすく、使用しやすく、チェーンしやすいからです。
他のヒント
を使用しております XMLマインドXml編集 編集と Maven 用 ドックブク ビルド中に出力を作成するためのプラグイン。優れたテンプレートのセットについては、以下のテンプレートをご覧ください。 休止状態 または 春 提供する。
HTML 出力の場合は、 Docbook XSL スタイルシート XSLT プロセッサ xsltproc を使用します。
PDF出力の場合は、 デブラテックス, これを LaTeX に変換し、pdflatex を使用して PDF にコンパイルします。(以前は、Jade、DSSSL スタイルシート、jadetex を使用していました。)
を使用しております
- Serna XML エディター
- Eclipse (単純な XML 編集、主に技術者によって使用されます)
- 独自の Eclipse プラグイン (リリースノート専用)
- Maven docbkx プラグイン
- 標準の docbook スタイルシートに基づいた、特定の企業スタイル シートを含む Maven jar
- CSV を DocBook テーブルに変換するための Maven プラグイン
- BugZilla データを抽出し、そこから DocBook セクションを作成するための Maven プラグイン
- Hudson (PDF ドキュメントを生成するため)
- 作成した PDF ドキュメントを展開するための Nexus
いくつかのアイデアがあります:
各製品バージョンでは、PDF だけでなく、元の完全な DocBook ドキュメントも展開します (ドキュメントを部分的に作成し、部分的に生成するため)。DocBook ドキュメント全体を保存すると、将来のシステム設定の変更に影響を受けなくなります。システムが変更された場合に、コンテンツがどこから抽出されたか (または diff に置き換えられたか) を意味します。システム)、正確なコンテンツを生成できなくなります。これは、マニュアルの製品群全体を (異なるスタイルシートで) 再リリースする必要がある場合に問題を引き起こす可能性があります。瓶の場合と同じです。これらのコンパイル済み Java クラスも Nexus に配置されます (SCM に保存する必要はありません)。これは、生成された DocBook ドキュメントでも行います。
アップデート:
新しく作成された Maven HTML クリーナー プラグイン, 、これにより、次のことが可能になります DocBook コンテンツを Maven プロジェクト サイトに追加する (ベータ版も利用可能)。フィードバックは大歓迎です。 オープンディスカッション フォーラム。
DocBook スタイルシートと FOP はうまく機能しますが、最終的には RenderX を採用することにしました。RenderX は、標準をより徹底的にカバーし、DocBook スタイルシートが利用できるいくつかの優れた拡張機能を備えています。
ボブ・ステイトンの本、 DocBook XSL:完全ガイド, では、Linux または Windows (私は個人的に Mac を使用したことがありませんが、ほぼ間違いなく MacOS も同様です) で動作するものを含む、いくつかの代替ツール チェーンについて説明しています。
一般的なアプローチは次のとおりです。 DocBook XSL スタイルシート.
Apache の FOP に関する質問について:(Gustavo が提案したものと同様の) ツールチェーンを確立したとき、 RenderX XEP エンジン. 。XEP の出力はもう少し洗練されているように見えますが、私が覚えている限り、FOP にはテーブルに関していくつかの問題がありました (ただし、これは数年前のことであり、変わっている可能性があります)。
FOP を使用すると、誰かが絶対に実装したいと判断した機能を手に入れることができます。真剣に出版を考えている人で、本番環境でこれを使用している人はいないでしょう。RenderX や Antenna House を使用した方がはるかに優れています。 アーバーテキスト. 。(私は過去 10 年分の実装プロジェクトですべてこれらを使用してきました。) それは、ビジネス要件、自動化したい範囲、チームのスキル、時間、リソースがどのようなものであるかによって異なります。それは単なるテクノロジーの問題ではありません。
Red Hat、Ubuntu、または Windows を使用している場合は、かなり完全なコマンド ライン ツールチェーンである Publican を検討してください。Red Hat はこれを広範囲に使用しています。
- Wikiはこちら: https://fedorahosted.org/publican/
- ドキュメントはこちら: http://jfearn.fedorapeople.org/Publican/
- ここからtarballとexeファイルを入手してください: https://fedorahosted.org/releases/p/u/publican/
という記事 DocBook ツールチェーン も役立つかもしれません。のセクションです 方法 Eric Raymond によって書かれた DocBook に掲載されています。
私は docbook ツールチェーンを簡素化するために 2 つの CLI ユーティリティを使用してきました。xmltoとパブリカン。
Publican は私にはエレガントに見えますが、Fedora と Redhat の出版ニーズには十分に適合しています。
私は、完全な Docbook-XSL パイプライン/ツールチェーンをインストールする RubyGem である bookshop と呼ばれるオープンソース プロジェクトをリリースし、現在取り組んでいます。これには、Docbook ソース ファイルを作成および編集し、さまざまな形式 (現在は pdf と epub で、急速に拡張されています) を出力するために必要なすべてが含まれています。
私の目標は、Docbook ソースからゼロからエクスポート (PDF など) までを 10 分以内に実行できるようにすることです。
サマリー:
bookShop は、Docbook ツールチェーンの幸福と持続可能な生産性を実現する OSS Ruby ベースのフレームワークです。このフレームワークは、開発者が迅速に立ち上げられるように最適化されており、設定よりも規約を優先し、最初からベスト プラクティス、標準、ツールを使用してセットアップすることで、DocBook から出力までのフローをより迅速に開始して開発できるようになります。 。
宝石の場所は次のとおりです。 https://rubygems.org/gems/bookshop
私はコンテンツ作成のほとんどに Windows を使用することを好みます (Notepad++ エディター)。Linux の Publican は、適切なドキュメント構造を作成し、出力を処理するための優れたツール チェーンです。私は Windows マシンと仮想 Linux マシンで Dropbox (他のドキュメント共有サービスもあり、両方のプラットフォームでうまく機能するはずです) を使用しています。このセットアップにより、私にとって最適な組み合わせを実現することができました。Windows で編集作業が完了したら (すぐに Linux マシンに同期されます)、Linux に切り替えて publican ビルドを実行し、HTML および PDF 出力を作成します。これらの出力は、Dropbox によって Windows フォルダー内で再び更新されます。