Personal tools
You are here: Home ブログ nagai Forrest で任意のドキュメントを統合して HTML/PDF 出力する
Document Actions

Forrest で任意のドキュメントを統合して HTML/PDF 出力する

今回使用したバージョンは以下のとおりです。
Forrest (Apache Forrest) 0.8


以下の <howto-time-travel> 内のドキュメントを統合することにします。
%MY_PROJECT%\src\documentation\content\xdocs\site.xml
-------------------------------------------------------------------------------
<site label="Home" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab="">
  :
  <howto-time-travel label="How to time travel" href="">
    <howto-future label="How to go to future" href="howto-time-travel/howto-future.html"/>
    <howto-past label="How to go to past" href="howto-time-travel/howto-past.html"/>
  </howto-time-travel>
  :
</site>
-------------------------------------------------------------------------------


統合ドキュメントの出力先と、統合するかどうか判定する属性を任意の名前と値で追加します。
属性値は子ノードにも継承される為、統合用のドキュメントは含まれないよう指定します。
%MY_PROJECT%\src\documentation\content\xdocs\site.xml
-------------------------------------------------------------------------------
<site label="Home" href="" xmlns="http://apache.org/forrest/linkmap/1.0" tab="">
  :
  <howto-time-travel label="How to time travel" href="" included-in-all-of-howto-time-travel="true">
    <all-of-howto-time-travel label="All of how to time travel" href="all-of-howto-time-travel.html"
      included-in-all-of-howto-time-travel="false"/>

    <howto-future label="How to go to future" href="howto-time-travel/howto-future.html"/>
    <howto-past label="How to go to past" href="howto-time-travel/howto-past.html"/>
  </howto-time-travel>
  :
</site>
-------------------------------------------------------------------------------


統合する為のサイトマップを作成します。
xpath の include/exclude には先程指定した統合判定属性を割り当てます。
%MY_PROJECT%\src\documentation\howto-time-travel.xmap
-------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <map:pipelines>
    <map:pipeline internal-only="false">
     <map:match pattern="*.xml">
    <map:generate src="cocoon://abs-linkmap"/>
      <map:transform type="xpath">
        <map:parameter name="include" value="//*[@included-in-all-of-howto-time-travel='true']"/>
        <map:parameter name="exclude" value="//*[@included-in-all-of-howto-time-travel='false']"/>
      </map:transform>
      <map:transform src="{forrest:forrest.stylesheets}/site-to-book.xsl" />
      <map:transform src="{forrest:forrest.stylesheets}/aggregates/book-to-cinclude.xsl">
         <map:parameter name="title" value="How to time travel"/>
         </map:transform>
      <map:transform type="cinclude"/>
      <map:transform src="{forrest:forrest.stylesheets}/aggregates/doc-to-doc-uniqueids.xsl"/>
      <map:transform src="{forrest:forrest.stylesheets}/aggregates/docs-to-document.xsl"/>
      <map:serialize type="xml"/>
    </map:match>   
   </map:pipeline>
  </map:pipelines>
</map:sitemap>
-------------------------------------------------------------------------------


静的ドキュメント生成時に、統合処理が行われるようにします。
%MY_PROJECT%\src\documentation\sitemap.xmap
-------------------------------------------------------------------------------
  <map:pipelines>
    :
    <map:pipeline internal-only="false">
      <map:match pattern="**.xml">
        <map:match pattern="all-of-howto-time-travel.xml">
          <map:mount uri-prefix="" src="howto-time-travel.xmap"
            check-reload="yes" />
        </map:match>
      </map:match>
    </map:pipeline>
    :
  </map:pipelines>
-------------------------------------------------------------------------------


これで対象のドキュメントが統合されたHTML/PDFが生成されます。
aggregate-documents1



(おまけ) ドキュメントを持たないノードがコンテンツテーブルに含まれないようにします。
%FORREST_HOME%\main\webapp\resources\stylesheets\site-to-book.xsl
-------------------------------------------------------------------------------
      :
      <xsl:otherwise>
        <xsl:choose>
          <xsl:when test="contains(@href,'.html')">

            <menu>
              <xsl:copy-of select="@*"/>
              <xsl:apply-templates/>
            </menu>
          </xsl:when>
          <xsl:otherwise>
            <xsl:apply-templates/>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:otherwise>
      :
-------------------------------------------------------------------------------

aggregate-documents2

Category(s)
Forrest
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/nagai/forrest-89076570306e30ad30e530e130f330c830927d71540830573066-html-pdf-51fa529b3059308b/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.