ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Cocoonで動的にデータを作成し、PDFで出力する(その2)

2008-10-17 16:05:49 | JavaとWeb

 前に、Cocoonで動的にデータを作成し、PDFで出力するというのを書いて、そこで


   1.指定したURLに応じて、ジェネレーターのXMLファイルを変えられる方法を利用する
   2.XSPを利用して、動的にXMLデータを作成し、読み込ませる
   3.ジェネレーターをJSPにして、JSPが動的にXMLデータを作成する。


と3とおり挙げた。1については、前回書いた。
なので、今回は、2.XSPを利用して、動的にXMLデータを作成し、読み込ませる




■XSPとは

 XMLファイル中にxspあるいはxsp-requestなどのタグを入れて、URLで渡した引数とか、JavaScriptで実行した結果とかを使えるようにしたもの。
 こんなかんじ
<?xml version="1.0" ?>
<xsp:page language="java"
	xmlns:xsp="http://apache.org/xsp"
        xmlns:xsp-request="http://apache.org/xsp/request/2.0">

<xsp:structure>
<xsp:include>java.util.*</xsp:include>
</xsp:structure>

<xsp:logic>
String mincho="明朝です";
String gothic= new Date().toString();
</xsp:logic>

<page>
<title><xsp-request:get-parameter-values name="title"/></title>
<mincho><xsp:expr>mincho</xsp:expr></mincho>
<gothic><xsp:expr>gothic</xsp:expr></gothic>
</page>
</xsp:page>

(上記< >は、本当は半角。赤字がXSPのタグ部分)
これで、XMLファイルが出来るので、あとは、これを読み込ませて、PDFをつくる。

なお、xsp-request:get-parameter-valuesのところに引数のtitleの値が入り、xsp:exprは、xsp:logicで書いたJSPに対して、xsp:expで示した変数の値が入ります。




■具体的方法

(1)まず、XSPファイルを用意する
 上記のファイルを、test.xspというファイル名で保存し、前々回のmytestフォルダの下に入れます。

(2)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 type="serverpages" src="test.xsp" />
        <map:transform src="page2fo.xsl"/>
        <map:serialize type="fo2pdf"/>
      </map:match>
    </map:pipeline>
  </map:pipelines>
</map:sitemap>

(上記< >は、本当は半角。赤字が今回書き換え部分)
で書いて保存、mytestフォルダの下に置きます。
generateのtypeがserverpagesになっている点に注意

(3)page2fo.xslは、そのままmytestフォルダへ




■アクセス

Tomcatを起動。ブラウザから

http://127.0.0.1:8080/mytest/test.pdf?title=test

(注意!:test.pdfを指定する。xspではない)

でやると表示するけど、これだと、ブラウザのフォームの値を表示するていどならいいけど、
複雑なことするとなると・・・やっぱ、jspということで、次回はJSPを設定する方法を書きます。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「NTTデータらからEclipse 3.4/3.3用の日本語化言語パックリリース」だそうな。。

2008-10-17 13:06:45 | Weblog

ここのスラッシュドットの記事
NTTデータらからEclipse 3.4/3.3用の日本語化言語パックリリース
http://slashdot.jp/developers/08/10/17/0233244.shtml

によると
 その記事から、日本語化パックのページにいけます(真ん中あたりにリンクあり)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Excelシートの内容を元にデータベースを切る

2008-10-17 10:53:36 | Weblog

Excelシートが入力、あるいは出力になっていている場合、
その内容をDBに格納/取り出しするためには、
Excelシートの内容をテーブルに展開できないといけない。

その手順

(1)Excelファイル名(ブック名)を挙げましょう

(2)そのブックの中にあるシート名を挙げましょう
   ただし、シートが
    A画面仕様
    B画面仕様
   のように、あるシートを元に派生して(コピーして)作っている場合は、
   その元シート名を挙げます(この場合、「画面仕様」)

(3)1シート内に2つ以上の異なった表が入っている場合は、その表を
   分けましょう


(4)第一正規形:繰り返しがあったら、除きます

(5)第二正規形:主キーをきめ、主キーの一部に従属するデータがあれば、それを分けます

(6)第三正規形:主キー以外で従属するデータがあれば、それを分けます。


 注意点は、データベースにおける行は、Excelファイルの行とは限らず、
桁や、行と桁をあわせたものになっている場合もあること。こんなかんじ。

たとえば、番組表などは、行に時間、桁にテレビ局が入っていますが、これをテーブルにするとしたら

テレビ局,開始時間,終了時間,番組名

と、行(開始時間、終了時間)と桁(テレビ局)をあわせたものになります。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする