BSB(Baykit Stylesheet Broker)は、 横浜ベイキットのBayServerが内蔵している、XSLT変換を行うクラスライブラリ群です。 BSBを使うと、XML文書をXSLTスタイルシートと動的に結合して、HTML文書を生成することができます。 まずBayServerに内蔵されているBSBを使ってみます。
ここではテストのために、
またしても同じ2つのサンプル文書(XMLとXSLTスタイルシート)を作りました。
C:\usr\public_html\xmltest\xml\orders.xml C:\usr\public_html\xmltest\xml\orders.xslとなるように置きます。そして、 C:\usr\public_html\xmltest\WEB-INF C:\usr\public_html\xmltest\WEB-INF\libの2つのディレクトリを作ります。libディレクトリには、 $BSERV_HOME\webapps\bsb\WEB-INF\lib に置かれているJarファイル、
これで準備は完了です。BayServerを起動して、 Webブラウザから「http://localhost:8767/xmltest/xml/orders.xml」 (8767はBayServerのポート番号)にアクセスしてみましょう。 データが表示さればOKです。
BSBはHTTPリクエスト・パラメータをそのままXSLパラメータとしてXSLTに渡してくれます。 例えば abc というリクエストパラメータを持つFORMのあるHTMLから def.xml にアクセスし、 そのdef.xmlにスタイルシートとして ghi.xsl が紐づいていたとします。 すると、ghi.xslに
BSBのXSLT変換は、Tomcat上でも使用できます。 BSBのバイナリ配布に含まれる「bsb」ディレクトリをWebアプリケーションをルートとみなし、 その下のWEB-INF/libにbsb-boot.jar、WEB-INF/bsb/libにbsb-*.jarとwebut-*.jarを配置します。 WEB-INF/web.xmlでは、初期設定で、 拡張子 *.xml のファイルに対してサーブレット org.baykit.bsb.servlet.XSLServlet が呼び出されるようにサーブレット・マッピングが設定されているので、 *.xmlというURLにアクセスすればXSLTが働いてHTMLが出力されます。 BSBの挙動はbsb.propertiesファイルで設定することができます。 これはweb.xmlのサーブレット初期化パラメータで、そのパスを指定します。
logging=trueを指定すると、詳しいログ出力が得られます。 なお、上の「HTTPリクエスト・パラメータとXSLパラメータ」で触れた、 HTTPリクエスト・パラメータをXSLTに渡す際に日本語の値は使えるのか? という点については、 BSBのFAQによると、パラメータ request.encoding を指定すれば可能とのことです。 request.encoding=Shift_JISしかし、私の環境では変換されず、ログ出力させてみると??????みたいな文字列になってしまいました。 (Tomcat 5.0.30b、BSB 1.3.4、Windows XP上で日本語EUC(euc-jp)のXML文書を使用時) それでrequest.setCharacterEncoding()を行うサーブレット・フィルタを作ってやると、 正しく日本語のパラメータ値も渡すことができました。 もしかして、日本語のパラメータ「名」ならうまくいくのかも(そんなわけないか)
|