■44525 / inTopicNo.3) |
Re[2]: XSLで特定の値を表示するには? |
□投稿者/ シロ (6回)-(2009/12/10(Thu) 22:05:55)
|
■No44166 (魔界の仮面弁士 さん) に返信
> ■No44154 (シロ さん) に返信
>>上のようなリストの値をクリックしてその子ノードの値をXSLでまた処理したいのですがどのようにすればいいでしょうか?
>
> 子ノードに対する処理というものが、どのような XML をどのように変換するものなのか明らかにされていませんが、
> いずれにせよ、HTML に対するクリック動作であることから、JavaScript もしくは JScript による制御が必要かと思います。
>
> li 要素に onclick 属性を割り当て、そこに XSLT による変換処理を組み込んでみてください。
>
> もしくは、最初からすべての子ノードを変換しておき、それを style="display:none" で非表示にしておいて、
> クリック時に .runtimeStyle.display を修正して表示させる、という方法もあるかと思います。
> これは、下記の webdev.xml, list.js, list.xsl で使われている方法です。
> http://msdn.microsoft.com/ja-jp/library/dd296835.aspx
>
> # 古いサンプルなので、xsl の名前空間が XSLT 1.0 勧告版の http://www.w3.org/1999/XSL/Transform ではなく、
> # ワーキングドラフト版である http://www.w3.org/TR/WD-xsl によるサンプルなっています。適宜読み替えてください。
魔界の仮面弁士さま、ありがとうございます。
javascriptをまったく使ってなかったせいで納得するのに時間がかかりました。
サンプルのコードはTreeViewをXML+XSL+Javascriptで実装するようなものですね。
これを利用してみようかと思います。
ちなみにliタグにonclick属性を割り当てて変換する方法は
<xsl:template match="変えるノード">
<li>
<xsl:attribute name="onclick">
<!--chirdnodeTrans:子ノードを取得してXSLを適用させる独自の関数-->
<!--idは変えるノードを区別するための一意の値(そのときによって変える)-->
chirdnodeTrans(<xsl:value-of select="@id" />);
</xsl:attribute>
</li>
</xsl:template>
上のようなコード以外にもありますか?
(上のようなコードがいいのかどうかはわかりませんが・・・)
----追記----
サンプルのコードはxmlns:xsl="http://www.w3.org/TR/WD-xsl"以外にも
<?xml:stylesheetになってたのとversion属性がないという問題がありました。
訂正前
<?xml:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
訂正後
<?xml-stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
IEでは問題なく動くようになりましたが、safariでは最初の変換しかしてくれない・・・
調べてみたらsafariのxsl動作対象は<?xml-stylesheet?>のみなのですね・・・
|
解決済み
|