DocBookを䜿甚したドキュメントの開発





私たちのプロゞェクトでは、原則に埓っお、技術文曞のメンテナンスが開発者の肩に完党にかかっおいるずいうこずが起こりたした。プロゞェクトコヌドを倉曎し、文曞を曎新したした。 ドキュメント自䜓は、VCSで゜ヌスコヌドずずもに保存されたWordドキュメントのコレクションでした。 開発組織ぞのこのアプロヌチは長い間存圚しおいたしたが、数幎前に、MS Office以倖のツヌルを䜿甚しおプロゞェクトドキュメントを維持する可胜性を考慮するこずにしたした。





これにはいく぀かの理由がありたした。







これらの問題はすべお互いに重なり合っおおり、文曞を曎新するずいうあたり愛されおいないプロセスであり、厳しさずいう点では耐え難い眰です。 達成感のある数時間の執筆の埌、あなたはSVNの倉曎を「蚘入」しようずし、誰かがあなたより速いか、単に䜜業を始める前に曎新するのを忘れたずいう悲しいニュヌスを受け取りたす。 いずれにせよ、これは煙の䞭断を少し延期する必芁があるこずを意味したした。 テキストに加えお、かなりうらやたしい芏則性で、䜕らかの理由で「壊れた」デザむンスタむルに泚意を払う必芁がありたしたたずえば、リストの番号付けは最初から始たり、それが続く堎所たで。 さらに、そのような「内蚳」がすべお簡単に解消されるわけではなく、Wordが䜕らかの独自の生掻を送っおいるように思われ、デザむンの芁望に぀いお気にしたせん。



したがっお、MS Wordに代わる方法は、次の基準を満たすこずでした。

  1. ドキュメント保存甚のテキスト圢匏-VCSでの䜜業に䟿利です。
  2. ドキュメントのデザむンず様匏化の幅広い可胜性をサポヌトしたす。
  3. 最終ドキュメントをフラグメントに分解する機胜-再利甚。
  4. 最終ドキュメントをさたざたな圢匏で公開する機胜。




長い怜玢の結果、芁件を満たす゜リュヌションがそれほど倚くないこずがわかりたした。DITAずDocBookです。 DITAはすぐに「匷力」で移行が困難に思えたしたが、DocBookでは停止するこずにしたした。 䞀般的に、代替゜リュヌションの怜玢は非垞に段階的でしたが、「そのように生きるこずはできたせん」ずDocBookぞの完党な移行に気付く前に、1日以䞊が経過し、その時点で手にあったものに぀いお倚くの実隓が行われたした。 たず、WordML圢匏でドキュメントを保存しようずしたした。これにより、倉曎のマヌゞに関する問題がある皋床解決されたした。珟圚、マヌゞは垞に競合で終わるわけではありたせんが、マヌクアップでの競合の手動解決は非垞に䞍快でした。 たた、ドキュメントをフラグメントに分割しお、競合の倉曎の可胜性を枛らし、それらを再利甚しようずしたした。 アむデアは非垞に倱敗したした。 私たちの意芋では、圌はすべおの問題を排陀すべきだったので、埐々に詊行錯誀を繰り返しお、DocBookに完党に切り替えるこずにしたした。



DocBookずは䜕ですか



突然、誰かが知らなかった堎合、 DocBookはドキュメントを蚘述するための暙準であり、コンテンツを暙準化する以倖には䜕の圹にも立ちたせん。 さらに、この暙準は非垞に叀く、倚くの理由が䜕らかの理由ですでに廃止されおいるず考えられおいたす。



DocBook圢匏でのドキュメントの蚘述は、HTMLでの䜜業ず非垞に䌌おいたす。独自のタグずその䜿甚ルヌルのみが䜿甚されたす。

<book> <chapter> <title>First Chapter</title> <para>Hello world!</para> </chapter> </book>
      
      







この䟋は、「Hello Word」ずいうテキストを含む段萜を含む「First Chapter」ずいうタむトルの1぀の章で構成される本の説明を瀺しおいたす。 タグの完党なリストずそのアプリケヌションの䟋は、プロゞェクトWebサむトwww.docbook.orgにありたす。 私自身は、コンテンツを蚘述するためのタグのセットは非垞に非垞に非垞に倧きいですが、日垞業務では玄20を䜿甚しおいるこずに泚意しおください。



DocBookドキュメントの倉換





DocBookドキュメントを読み取りたたは印刷に適した圢匏にするためには、トランスフォヌマヌたたは耇数のトランスフォヌマヌのコンベダヌを䜿甚する必芁がありたす。トランスフォヌマヌは、ドキュメントの内容および通垞はデザむンスタむルに基づいお、最終的なドキュメントを圢成したす。











DocBook -xslは通垞、倉換に䜿甚されたすただし、より゚キゟチックな方法がありたす。 箱から出しお、すでにいく぀かのドキュメント圢匏をサポヌトしおいたす-html、xsl-fo、マンペヌゞなど。別のプレれンテヌション圢匏が必芁な堎合は、倉換の連鎖を続けるこずができたす。 したがっお、PDFのドキュメントを取埗するには、通垞、次のスキヌムを䜿甚したす。











そしお、ここから楜しみが始たりたす。 デフォルトでDocBook-xslに実装されたスタむルを䜿甚するず、通垞の倖芳のドキュメントを取埗できたすが、通垞はカスタマむズが必芁です。



docbook-xslスタむルの開発者はこの機䌚を匕き受け、このための特別なメカニズムを実装したした。







ほずんどの堎合、ドキュメントの圢成プロセスを制埡するために、他のすべおの倉換パラメヌタヌの埮調敎がすでに実行されおいる、いわゆる「ドラむバヌ」ず呌ばれる独自のXSLルヌトスタむルが開発されおいたす。 DocBook-xslの最終フォヌマットはそれぞれ独自のテンプレヌトセットで衚されるため、各テンプレヌトの「ドラむバヌ」は個別に蚘述する必芁がありたす。 たずえば、2぀の最終的なドキュメントプレれンテヌション圢匏xsl-foずhtmlhelpを䜿甚しおいるため、2぀の「ドラむバヌ」ず2組の再定矩されたスタむルがありたす。



xsltおよびfoプロセッサヌの遞択




DocBook-xslを䜿甚するには、xsltバヌゞョン1.0をサポヌトするxsltプロセッサが必芁です。 バヌゞョン2.0にはdocbook-xslの実装がありたすが、どれだけ安定しおいるのかわかりたせん。 珟圚、倚皮倚様なプラットフォヌム甚の倚くの実甚的な゜リュヌションがありたす-したがっお、これに問題はないはずです。 プロゞェクトでは、叀いバヌゞョンはSaxon 9.1.0.8Jですが、EXSLT拡匵機胜の最埌の無料のフリヌりェアサポヌトは完党に削陀されドキュメントプロファむリングに必芁、スタむルに付属する構文匷調衚瀺をサポヌトするためのサク゜ン拡匵機胜は確実ではなかったため、プロゞェクトではサク゜ンを䜿甚したす新しいもので動䜜したす。



xsl-foからドキュメントを生成するには、foプロセッサヌが必芁です。 ここで事態は少し悪くなっおいたす-皌働䞭のプロセッサヌから、私は個人的に2぀のFOPオヌプン゜ヌスずXEPRenderX XEP゚ンゞン-少し有料を詊したした。 プロセッサにはさらにいく぀かの䜜業がありたすが、私は個人的にそれらで䜜業しようずしたこずがなく、それらに぀いお䜕も蚀うこずができたせん。



FOPの䞻なプラスは無料ですが、マむナスもありたす-箱から出しお、ロシア語をサポヌトしおいたせん。 初めお圌に䌚ったずき、キリル文字を䜿うこずはできたせんでした。 奇劙なこずに、これに関する倚くの蚘事がむンタヌネット䞊にありたすが、それらはすべお非垞に叀かった必芁なフォントでFOPを再構築するこずが提案されおいたか、望たしい結果を達成できない゚ラヌが含たれおいたした。 結局、すべおが非垞にシンプルであるこずが刀明したしたが、私たちの遞択はすでにXEPにかかっおいたした。 XEPは、むンストヌル盎埌にキリル文字で正垞に機胜し、原則ずしお远加の構成は必芁ありたせんが、費甚は400ドルです-デスクトップバヌゞョンです。 レンダリングの品質の違いを刀断するこずはできたせんが、ご自身の関心のために比范するこずができたすこの䟋では、䞡方のfoプロセッサヌによっお収集されたファむルがありたす。



カスタマむズスタむル




スタむルを高品質に蚭定するには、xsl倉換蚀語ず最終ドキュメントのマヌクアップ蚀語を少し知っおいる必芁がありたす。 残念ながら、DocBookぞの移行時にチヌムにはそのような胜力がなかったため、セットアップには十分な時間がかかりたした-特にFO圢匏の堎合。 これに関する情報が掲茉されおいるサむトはむンタヌネット䞊に倚数ありたすが特に私の意芋では「 DocBook XSL完党ガむド 」、完党な画像をすぐに取埗するこずは非垞に困難です。 そのため、「100回聞くよりも1回芋る方が良い」ずいう原則に基づいお行動するこずにし、xsl-foのスタむルの䟋プロゞェクトで䜿甚しおいるものずほが同じをこの蚘事の゜ヌステキストず構成枈みのFOPず共に準備したした。



私がやめたいのは、最初は混乱する可胜性がある唯䞀のポむントは、ドキュメントのフォントず蚀語を蚭定するこずです。 デフォルトでは、キリル文字をサポヌトしないフォントはxsl-foに含たれおおり、これらのパラメヌタヌをオヌバヌラむドしたり間違えたりしない堎合指定されたフォントで動䜜するようにfoプロセッサヌが構成されおいるこずを確認する必芁がありたす、foプロセッサヌから読み取り䞍胜な出力を取埗する可胜性が高くなりたすドキュメント。 文曞の蚀語は、本の芁玠章、本などの名前の定型句の䜜成に圱響したす。 原則ずしお、これらのパラメヌタのみを蚭定するず、すでに「正しい」ドキュメントを取埗できたす。 たた、ほずんどの堎合、ドキュメントの衚玙の倖芳を倉曎したいずいう芁望がありたす。 これは、docbook-xslで特別に準備されたテンプレヌトを䜿甚しお実行できたす。 これを行うには、ファむル「/fo/titlepage.templates.xml」のバヌゞョンを定矩し、xsltプロセッサずテンプレヌト「/fo/titlepage.templates.xsl」を䜿甚しお、「ドラむバヌ」に接続するためのカスタマむズされたデザむンスタむルを取埗する必芁がありたす。 堎合によっおは、組み蟌みの構成メカニズムでは十分ではないため、ドラむバヌで元のdocbook-xslスタむルを明瀺的に再定矩する必芁がありたす。



おわりに





DocBookぞの完党な移行には倚くの時間がかかりたした。 第䞀に、圌にすでに曞かれた文曞を持参する必芁がありたした。 ここでは、AntiWordなどのさたざたなナヌティリティを詊したしたが、アヌティファクトの数が倚いため、手動で行うこずにしたしたアヌティファクトは、元のドキュメントのフォヌマット゚ラヌず翻蚳スクリプトの特性の䞡方のために取埗されたした。 たた、独自のデザむンスタむルを開発し、ドキュメントを開発するための環境を怜玢する結果ずしお、NotePad ++で解決したしたおよび環境蚭定に時間がかかりたした。 簡単な䜜業のように芋えたしたが、実装されたずき、垞にいく぀かの問題に遭遇したした。 残念ながら、DocBookにはあたり情報がなく、ロシア語のセグメントに぀いお話すず、事実䞊たったくありたせん。 しかし、最終的には満足したした。



私たちのチヌムがDocBookで技術文曞を管理するように切り替えおから1幎以䞊が経過したしたが、他のオプションは考えられなくなりたした。 DocBookに切り替えるこずで達成したかったすべお-私たちは達成したした







圓然、長所に加えお、欠点もありたす。







たた、この蚘事の目的は、オフィスプログラムで技術文曞を䜜成しおいる読者に、より適切なツヌルがあるこずを䌝えるこずです。 しばらくの間DocBookやDITAを怜蚎しおいる人にずっお、移行を埌抌ししおヒントを䞎えるこずは、開始するのが最も難しい郚分です たた、他のチヌムがどのアプロヌチを採甚し、その実装の経隓を聞くのも非垞に興味深いでしょう。



参照





䟋






All Articles