WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:xslスタイルシートをJavascriptで動的に更新したい

0:[投稿] へっこきマン [MAIL] [2003/02/07 03:26 ][環境:WinXP, IE6, Opera6, NN7 わからない]

ホームページ内に作ったテーブルの
ヘッダ部分をクリックすることによって
その行を昇順にソートさせたいのですが
うまくいかなくて困っています。

データ形式はxmlで、xslでhtmlに変換しています。
クライアントサイドでの処理にしたいので
<xsl:sort select="col">の部分を
Javascript+DOMで動的に更新したいのですが
"xsl:sort"ノードの"select"属性(?)の値を操作するには
どうしたらいいんでしょうか?


1:[回答] ween [2003/02/08 11:40 ]

>"xsl:sort"ノードの"select"属性(?)の値を操作するには
取得した xsl:sort 要素ノード(xslSortとします)に対して
select 属性の値を取得するなら xslSort.getAttribute('select'),
値 value を設定するなら xslSort.setAttribute('select', value) です。

何となくこれ以前(またはこの後)の状態で躓かれているように思うのですが、
もしそうなら、どんな風にうまくいかないのでしょうか。

それから、Opera については 6 も 7 も XSLT を実装していなかっ
たと思うのでクライアントサイドでの処理は望めないでしょう。


2:[質問] へっこきマン [2003/02/09 01:31 ]

weenさん、回答ありがとうございました。
投稿は初めてなんで、相手にしてもらえるかどうか心配でしたが、
なんか、とてもうれしいですね!!

そして、現在の問題点なんですけど、
ndSort = objXSL.getElementsByTagName( "xsl:sort" );
ndSort(0).setAttribute( "select", value );
とすると、属性は設定できているようなんですが、その後、

tagTable.innerHTML = objXML.transformNode( objXSL );
としても、表示が更新されないのです。
どこかおかしいですか?


3:[回答] ween [2003/02/09 15:27 ]

http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/innerhtml.asp
> The property is read/write for all objects except the following,
> for which it is read-only: COL, COLGROUP, FRAMESET, HTML, STYLE,
> TABLE, TBODY, TFOOT, THEAD, TITLE, TR.

IE では table 要素の innerHTML は readOnly です。
tagTable が table 要素であるならば innerHTML 書き換えはエラーだと思います。
xslt で table 要素ごと生成するようにして
outerHTML や親要素の innerHTML を書き換えてみてはどうでしょう。


4:[関連] ma-to [2003/02/09 18:16 ]


>>3
> outerHTML や親要素の innerHTML を書き換えてみてはどうでしょう。

outerHTML は避けなければならないが、何にせよ、>>0 から想像する限りでは、後者の形をとっていなければ不自然だ。何故なら、この場合、シートまたはデータは、複数で構成されている方が都合良いから。ノード取得までは出来た、ということは、>>0 にある誤記は訂正されたのだろう。


>>0
> クライアントサイドでの処理にしたいので

XSLT は簡単手軽だから、何かを思いついた時にそれを試作するのには適している。しかし、処理のあっちこっちに関わらず、メモリーが大量に消費され、実に遅いから、XSLT は実用的ではない。特にサーバーサイドでどうしても動的な処理が必要であるという時に、これを使おうと真っ先に思い浮かべるのは危ない。


5:[完了] へっこきマン [2003/02/10 00:46 ]

weenさん、ma-toさん、回答ありがとうございました。
xslt で table 要素ごと生成するようにして
親要素の innerHTML を書き換えたらうまくいきました。
とりあえずIEでは使えるので、他のケースはぼちぼち調べます。

>IE では table 要素の innerHTML は readOnly です。
というのには、気づきませんでした。
こういうのって、スクリプトのエラー出ないんですか?

それから、投稿の際の誤記、すみませんでした(^_^;)

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World