- - PR -
パラメータによってXSLを切り替える方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2001-10-31 21:17
tomcat+cocoonでXML勉強中の初心者です.
1つのXMLファイルがあり.それに対して,複数のXSLを作っています. これにフォームやリンクから引数を与えることによって,ブラウザから同じXMLファイルを要求してもXSLが動的に変わり,それぞれ異なるHTML文書が生成される,というようなことを実現したいと考えております. 例えば,xspなどを用いてこれを実現する方法はありますでしょうか? よろしくお願いします. |
|
投稿日時: 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 みたいに飛ばすのはできませんか? |
|
投稿日時: 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"> あたり |
|
投稿日時: 2001-11-05 15:30
XML担当の新野です。
ちょうど今月公開予定のCocoonの連載記事で、このスタイルシートの切り替えを やります。なので、記事公開までお楽しみにお待ちください! にいの |
|
投稿日時: 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