<< 2006/03/22 | Home | 2006/03/24 >>
PR: 転職    葬式    マンスリーマンション 神戸    北海道    環境    FX    不動産担保融資    桐ヶ谷斎場    海外旅行    専門学校   

JAXBでDTDのDOCTYPE宣言を出力

前にちらっと書いたJAXBでXHTMLを生成する方法でリンク集のページを書いてみた。結構いい感じだ。やっぱりプログラミング言語は強力。

ひとつ困ったのは、XHTML 1.0のStrictを使う場合、頭にDTDのDOCTYPE宣言を入れないと、w3cのバリデータ様がお怒りになってcomplienceテストに通らない事。で、JAXBでこれをやるには、どうすればいいのか良く分からなかった。結局宣言部をJAXBに出力させないようにして回避。

PrintWriter pw = new PrintWriter(out);
pw.println("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>");
pw.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"");
pw.println("\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
pw.flush();
renderMyPage();
Marshaller m = jaxbContext.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_ENCODING, "Shift_JIS");
m.setProperty("com.sun.xml.bind.xmlDeclaration", Boolean.FALSE);
m.marshal(HTML, out);
out.flush();

なんだかなぁという感じだけど、

あとはJSPにするかどうか。この仕組みならJSPにする必要なんて無いのだけど、JSPはホットデプロイが出来るから、楽なんだよね。ほんとにそれだけのため。本体が全て<% %>で囲まれているJSPなんて初めて書いた。とはいえやっぱりエラーが起きた時とか面倒だしエディタも使いにくい。JSPは継承が使えないのも痛い。extendsディレクティブで既存クラスからの継承はできるけど、JSP同士での継承が出来ないんじゃ、結局親クラスはwarに入れなきゃならないわけで。やっぱりJSPは使わない方がいいかもしれない。

このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8