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が生成されます。
(おまけ) ドキュメントを持たないノードがコンテンツテーブルに含まれないようにします。
%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>
:
-------------------------------------------------------------------------------
- Category(s)
- Forrest
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/nagai/forrest-89076570306e30ad30e530e130f330c830927d71540830573066-html-pdf-51fa529b3059308b/tbping