- - PR -
XSLとJavaScriptについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-01-16 14:02
はじめまして、GREENと申します。
早速ですが、質問させて下さい。 XSLとJavaScriptを使用して表示を変更する仕組みを作ろうとしています。 以下のようなXSLを作成し、複数のXSLを用意するのではなく単一ファイル内で 表示変更をしたいのですが、うまい方法が見つかりません。 ご教授いただければと思います。 ちなみにXSLファイルはXMLファイルから直接呼んでいます。 <目的> ・1つのXMLファイルと1つのXSLファイルのみで表示を変えたい、構成したい。 ・Init()関数で作成されたフォームからTest1ボタンを押すとTest1表示がなされる。 (ex.XMLデータのツリー状態をそのまま表示) ・Init()関数で作成されたフォームからTest2ボタンを押すとTest2表示がなされる。 (ex.XMLデータをテーブル化して表示) ⇒現状、テストとしてTest1()関数にもTest2()関数にも戻るボタンのみいれてあり ますが、実際にはここにHTML化されたデータが入る予定です。 ⇒実行された関数の情報を元に<xsl:call-template name="test1_temp"/>などを使用して 特定の関数ごとのテンプレートを呼び出すことが出来れば実現できるのではないかとは 思っていますが、良い方法が思いつきません。 <!-- XSL内容 --> <xsl:template match="/"> <HTML><HEAD><TITLE>test</TITLE> <SCRIPT> <![CDATA[ function Init(){ Insert.innerHTML = "<form><input type=button value=\"Test1\" onClick=\"Test1()\"/> Test1 <br/><br/><input type=button value=\"Test2\" onClick=\"Test2()"/> Test2 </form>";} function Test1(){ Insert.innerHTML = "<form><input type=button value=\"戻る\" onClick=\"Init()\"/></form>";} function Test2(){ Insert.innerHTML = "<form><input type=button value=\"戻る\" onClick=\"Init()\"/></form>";} ]]> </SCRIPT></HEAD> <BODY onLoad="Init()"> <DIV id="Insert"/> </BODY> </HTML> </xsl:template> よろしくお願い致します。 |
|
投稿日時: 2004-01-17 10:22
xsl:text 中の<>は &lt;&gt;にする。
<!-- XSL内容 --> <xsl:template match="/"> <HTML><HEAD><TITLE>test</TITLE> <SCRIPT> <xsl:text disable-output-escaping="yes"> function Init(){ Insert.innerHTML = "<form><input type=button value=\"Test1\" onClick=\"Test1()\"/> Test1 <br/><br/><input type=button value=\"Test2\" onClick=\"Test2()"/> Test2 </xsl:text> <xsl:call-template name="test1_temp"/> <xsl:text disable-output-escaping="yes"> </form>";} </xsl:text> 文字列連結はタグと混在するとめんどうですね。 処理の形は XML →(XSLT)→ HTML(2表示形の混在)→Javascript で表示形切り替え デバッグは alert表示 や innerTextで同一内容を別のDivに出力する などして、objectが確実につかんでいるか、など一歩ずつ進めてゆきます。 ● ¥” エスケープはJavascript では? [ メッセージ編集済み 編集者: MMX 編集日時 2004-01-17 10:26 ] |
|
投稿日時: 2004-01-18 14:57
MMX様。
回答ありがとうございます。 XMLをXSLTで表現することと、データを処理すること、動的処理を行うことをうまく 単一ファイルで表現しようとするとなかなか大変だということが分かりました。 うまく自己デバッグ環境を整えながらやってみようと思います。 どうもありがとうございました。 |
1