- PR -

パラメータによってXSLを切り替える方法

1
投稿者投稿内容
まちゃあき
会議室デビュー日: 2001/10/18
投稿数: 4
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2001-10-31 21:17
tomcat+cocoonでXML勉強中の初心者です.

1つのXMLファイルがあり.それに対して,複数のXSLを作っています.
これにフォームやリンクから引数を与えることによって,ブラウザから同じXMLファイルを要求してもXSLが動的に変わり,それぞれ異なるHTML文書が生成される,というようなことを実現したいと考えております.

例えば,xspなどを用いてこれを実現する方法はありますでしょうか?
よろしくお願いします.
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2001-11-02 13:19
media(ブラウザーの種類)で振り分ける例なら雑誌記事にも載っていますが。
Cocoonの高機能ならいくつかの方法でできるでしょう(よくわからない)

XSLTの中だけでは、mode で振り分けです
choose
when test apply-templates mode="imode"
when test apply-templates mode="TUKA"
でモードを付けて
template mode="imode"

template mode="TUKA"
で振り分けします

DOMのようにスタイルシートを選択して、データに適用の書き方は?
JSP の foward みたいに飛ばすのはできませんか?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2001-11-02 17:06
技術評論社 XML PRESS Vol.3 P.106 では xsp:pi が 「現在」利用できないため
切替えできないとか、書いてあります。ストレートなのは?
たぶん
<?cocoon-process xsp
<?cocoon-process xslt
<xsp:logic
で <?stylesheet の href=" を可変発生なのでしょう
output-escape-disable で書き出せるか?

この号の第2、3章では JSP での例があります
<INPUT name="svg_url" type="hidden" value="graph1(2).jsp">
あたり

@IT新野
@ITエディタ
会議室デビュー日: 2001/07/27
投稿数: 66
投稿日時: 2001-11-05 15:30
XML担当の新野です。
ちょうど今月公開予定のCocoonの連載記事で、このスタイルシートの切り替えを
やります。なので、記事公開までお楽しみにお待ちください!

にいの
タケモ
会議室デビュー日: 2001/11/29
投稿数: 1
投稿日時: 2001-11-29 19:22
私もtomcat+cocoonでXML & Java勉強中の初心者です.

JSP ではダメですか? 一応、書き込んでおきます。

Windows の JSP でなら成功した方法があります。
Tomcat-3.2.3, cocoon-1.8.2 で試してみました。
RedHat 7.1 では、設定がおかしいのかエラーになります。
(Linux も初心者なので・・・, うまくいったら教えてください)

Xalan-j_2_2_D13 をダウンロードし、Xalan.jar を Cocoon に
入っているものより後に読み込まれるように細工します。
先に読み込まれると Cocoon が正常に動作しなくなります。
他に必要な jarファイルがあるかもしれません。

この状態で Xalan-j_2_2_D13 のサンプルにある SimpleTransform を
参考に JSP を記述したら、うまく動作しました。

下記の JSP の strXsl を変更しても正常に動いています。
他のページなどから form でデータを送ったらうまくいきそうです。

<%@ page
 contentType="text/html; charset=shift_jis"
 import="
  javax.xml.transform.TransformerFactory,
  javax.xml.transform.Transformer,
  javax.xml.transform.stream.StreamSource,
  javax.xml.transform.stream.StreamResult,
  javax.xml.transform.TransformerException,
  javax.xml.transform.TransformerConfigurationException
  "
%>
<%
 String strDir = "http://****/cocoon/";
 String strXsl = strDir + "test.xsl";
 String strXml = strDir + "test.xml";
 TransformerFactory tFactory = TransformerFactory.newInstance();

 StreamSource streamXsl = new StreamSource(strXsl);
 StreamSource streamXml = new StreamSource(strXml);
 Transformer transformer = tFactory.newTransformer(streamXsl);
 transformer.transform(streamXml, new StreamResult(out));
%>
1

スキルアップ/キャリアアップ(JOB@IT)