Cocoonのセットアップについて書いたので、次に、
まず、自分か作ったXMLファイルをCocoonでPDF化する方法について。
前回までの、作業の続きから書きます。
■必要なファイル等
Cocoonで1コンテンツ(1画面)に必要なファイルは3つ
sitemap.xmap 設定ファイル
XMLファイル もともとのコンテンツ(ジェねレート)
xslファイル フォーマット変換(トランスフォーム)
このうち、XMLファイルは、まあ、コンテンツごとにあるとして、XSLファイルは同じスタイルで出すのなら1つでいいし、sitemap.xmapは、コンテンツが入っているフォルダ1つに対して1個でいい
なお、Cocoonの下に、sitemap.xmapがあって、ここで、fo2pdfのシリアライザを登録したけど、もし、Cocoonの直下から呼び出すなら、この直下のsitemap.xmapを修正するのでもいい。
でも、今回は、それだとわかりにくので、新たにフォルダを作ります。
■つくりかた
Cocoonのフォルダの下、今まで挙げた例だと、
C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥webapps¥cocoon
の下にmytestというフォルダをつくって、ここに、いろいろ入れていくことにします。
まずは、XMLファイル、今回は、こんなかんじの・・・
<?xml version="1.0"?> <page> <title>フォントチェック5</title> <mincho>明朝体です</mincho> <gothic>ゴシックです</gothic> </page> |
(上記< >は、本当は半角です)
これを、test.xmlというファイル名で、今作ったmytestフォルダの下に入れます。
つぎは、XSLファイル。
まず、前回使った、page2fo.xslをコピーして、ゴシックを以下のように追加します
<xsl:template match="pmincho"> <fo:block font-family="MS-PMincho" font-size="12pt" space-before.optimum="12pt" text-align="left"> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="gothic"> <fo:block font-family="MS-Gothic" font-size="12pt" space-before.optimum="12pt" text-align="left"> <xsl:apply-templates/> </fo:block> </xsl:template> </xsl:stylesheet> |
(上記< >は、本当は半角です。赤字が追加部分です)
で、次にsitemap.xmapなんですけど、その前に少し説明
■パイプラインの仕組み
Cocoonでは、1つの画面というか、コンテンツを表示するのに、パイプラインという概念を使います。
こんなかんじ。
http://cocoon.apache.org/2.1/userdocs/concepts/367.daisy.img
つまり
ジェネレートであるXMLファイル
↓
トランスフォーム(実際はXSLT)で、XMLからFOファイルに変換←XSLに変換方法
↓
シリアライザ(fo2pdf:fop)でfoからPDFに
ってかんじで、ながれていくので、パイプライン
(パイプラインじゃなくって、ベルトコンベヤーじゃないの?というコメントは受け付けません)
■sitemap.xmap
ということで、sitemap.xmapでは、これを書きます。
<?xml version="1.0"?> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> <map:pipelines> <map:pipeline> <map:match pattern="test.pdf"> <map:generate src="test.xml"/> <map:transform src="page2fo.xsl"/> <map:serialize type="fo2pdf"/> </map:match> </map:pipeline> </map:pipelines> </map:sitemap> |
(上記< >は、本当は半角です)
これを、sitemap.xmapとして、mytestフォルダの下に置きます。
■アクセス
ってことで、そーすると、このようにファイルが置けるはずです。

そしたら、Tomcat起動
ブラウザから
http://127.0.0.1:8080/mytest/test.pdf
で、PDFファイルが見れるはずです。
今回は、かんたんな、XSLでやったので、しょぼいけど、
もっとFOをおぼえて、すんごいXSLを書けば、
なんか、かっこいい帳票でも、出てきそうな雰囲気を、かんじていただけましたあ・・??