で、いままで、Cocoonをやってきたので、おまけ。
Cocoonをつかって、XMLからExcelファイルを生成するサイトをつくります。
■しくみ
Cocoonは、3段階でした。それで、仕組みを示すと・・・
1.generate:XMLファイルを用意します
(前回やったように、JSPを用意し、そいつがXMLを作るのでもOK)
2.transform:そのXMLファイルを、gnumericという形式にします。
そのgnumericについては、
ここ(PDF) http://www.jfree.org/jworkbook/download/gnumeric-xml.pdf
とかに載っています。
3.serialize: ApacheのPOIである、org.apache.cocoon.serialization.HSSFSerializer
を使って、gnumeric形式からXMLにします。
→これは、cocoon内にすでに入っています。
■方法の概要
ということで、方法の概要です。
ここに書いてあるような手順で、Cocoonはインストールされているということを前提とします。
(1)sitemap.xmapでxlsが指定してあるか確認する
(2)xslファイル、xmlファイル、sitemap.xmapを用意する
(3)やってみる
■(1)sitemap.xmapでxlsが指定してあるか確認する
Cocoonがインストールしてあるフォルダ(Tomcatのフォルダ/webapps/cocoon)の直下に、
sitemap.xmapというファイルがあるはずです。
ここに、以下のような
<map:serializer mime-type="application/vnd.ms-excel" name="xls" src="org.apache.cocoon.serialization.HSSFSerializer"/> |
(上記< > は本当は半角)xlsを指定する行があると思います。
なければ、serializerを書くところに、指定します。
■(2)xslファイル、xmlファイル、sitemap.xmapを用意する
つぎに、その Cocoonがインストールしてあるフォルダの直下に、適当に
ファイルを作成します。今回はmytest5というフォルダを作成しました
(なぜ、5か・・・は聞かないでください。いくつかテストしたのです・・)
・そしたらまず、xmlファイルを用意します。
こんかいは、こんなのを用意しました。
<?xml version="1.0"?> <!DOCTYPE page [ <!ELEMENT page (title?, content)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (para+)> <!ELEMENT mincho (#PCDATA)> <!ELEMENT pmincho (#PCDATA)> ]> <page> <title>MyTitle</title> <content><para>1</para><para>2</para></content> </page> |
(上記< > は本当は半角)
これを、上記のmytest5のフォルダの下に、hello.xmlという名前で置きます。
・次に、xslファイルをコピーしましょう。
Cocoonがインストールしてあるフォルダ(Tomcatのフォルダ/webapps/cocoon)の下、
samples/hello-world/style/xslの下に、「page2xls.xsl」というのがあります。
これを、上記のmytest5のフォルダの下に、page2xls.xslという名前で置きます。
・そしたら、このフォルダ用の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.xls"> <map:generate src="hello.xml" /> <map:transform src="page2xls.xsl"/> <map:serialize type="xls"/> </map:match> </map:pipeline> </map:pipelines> </map:sitemap> |
(上記< > は本当は半角)
を、上記のmytest5のフォルダの下に、sitemap.xmapという名前で置きます。
この結果、mytest5フォルダの下には、hello.xml,page2xls.xsl,sitemap.xmapの3つの
ファイルが出来るはずです。
■(3)やってみる
tomcatを起動し、
http://127.0.0.1:8080/cocoon/mytest5/test.xlsにアクセスすると、
excelファイルをどうするかみたいなことが聞かれ、そこで、「開く」にすると、
titleで指定したMyTitleというシート名で、セルに1と2が書かれると思います。
もっといろんなことが書きたい場合は、さっき書いた
ここ(PDF) http://www.jfree.org/jworkbook/download/gnumeric-xml.pdf
をみて、xslとxmlをいろいろ書いてみてください。前のやり方を使えば、JSPでもいろいろ出来ますよね。
(あ、ごめんなさい。言い忘れた!そのかわり、上のPDF,英語です ^^;)
