- PR -

XMLを動的に動かす場合

1
投稿者投稿内容
紫苑
会議室デビュー日: 2002/07/05
投稿数: 8
投稿日時: 2002-08-22 15:23
こんにちわ。XMLを勉強し始めてXSLTでとても困っています。
もしよろしければご相談に乗ってください。

XML文書をスタイルシートと組み合わせ動的に表示するときHTML+JavaScriptを使いますが
以前の連載にもありましたようなクリックで制御するのは理解できました。
しかしながら、同じ仕組みを用いてonMouseoverやonMouseoutでは出来ないのでしょうか。

見づらいですがコードを載せさせていただきます。
=============================================================

<head>
<xml id="data" src="samp.xml"></xml>
<xml id="style1" src="style1.xsl"></xml>
<xml id="style2" src="style2.xsl"></xml>

<SCRIPT Language="JavaScript">
<!--
function sort_01() {
here.innerHTML = data.transformNode(style1.documentElement);
}
function sort_02() {
here.innerHTML = data.transformNode(style2.documentElement);
}
function del() {
here.innerHTML = "";
}
//-->
</SCRIPT>
</head>
<body>
<a href="link" onMouseover="sort_01()" onMouseOut="del()">スタイル1</a>
<a href="link" onMouseover="sort_02()" onMouseOut="del()">スタイル2</a>

<div id="here">
</body>

=============================================================
もちろん、XML文書、XSLは同じディレクトリに存在しておりますしXML文書内でXSLTを呼び出したら動作します。またHTML上でbuttonを使って動的に呼び出すのは可能です。
しかしHTMLを介して動的にMOUSEOVERを行うと上手くいかないんです。このコードだとsort_01()は呼び出されますが、sort_02()は呼び出せません。del()は呼び出せます。
個人の考えでは一度表示した場所(here)に別のオブジェクトを乗せようとすると良くないのかなと考えておりますが、MOUSEOUTでhereのオブジェクトを削除するのが一番早いのでしょうか?それでしたらどういうコードが必要でしょうか?

お時間を頂戴しまして申し訳ありませんがお答えできる人がおりましたら、よろしくお願いいたします。
紫苑
会議室デビュー日: 2002/07/05
投稿数: 8
投稿日時: 2002-08-23 10:19
たくさんの閲覧ありがとうございます。
でも、返答が一件もないということはやはり難しいのでしょうか?
@ITの掲示板なら!と思ってたんですが…。

難題過ぎますかね…。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-08-23 11:32
まず、日本語がよくわかりません。
特に「HTMLを介して動的にMOUSEOVERを行うと」。どういう意味?

XML や XSLT そのものは <javascript> のことは関知せずスルーするだけでしょうし、
data,style1,style2 でどういう JavaScript が生成されてるかもわかりませんから、
追試もソース確認もできない。
生成された HTML を見なきゃなんとも、でしょう。
紫苑
会議室デビュー日: 2002/07/05
投稿数: 8
投稿日時: 2002-08-23 12:03
返答ありがとうございます。
ボキャブラリーが足りなくて申し訳ありません。

>特に「HTMLを介して動的にMOUSEOVERを行うと」。どういう意味?

「HTMLに組んだJavaScriptを使用してMouseoverを動作させ、スタイルシートを動的に切り替える」という意味です。
イメージは以前@ITさんで連載されていた:
http://www.atmarkit.co.jp/fxml/askxmlexpert/001styleclick/01styleclick.html
をMouseOverで行いたいのですが。


>data,style1,style2 でどういう JavaScript が生成されてるかもわかりませんから、
>追試もソース確認もできない。

dataは単純なXML文書、style1、style2は形式の異なったテーブルを表示するスタイルシートだと思っていただければ宜しいかと思います。ともに、コード内ではJavaScriptは使用しておりません。JavaScriptが表記されているのは前述したHTMLのみです。

解答を得るにあたって、説明不足な点がありましたらご投稿ください。
よろしくお願いいたします。

BBC
常連さん
会議室デビュー日: 2002/03/15
投稿数: 37
お住まい・勤務地: 東京
投稿日時: 2002-08-23 14:34
こんにちは。

>http://www.atmarkit.co.jp/fxml/askxmlexpert/001styleclick/01styleclick.html
>をMouseOverで行いたいのですが。

とりあえず、上記のURLにあるxml、xsl、dtdファイル+上記のHTMLを利用して、
JavaScriptの動作確認をしてみました。
・・・普通に呼び出せました(^_^;)。
(Win2000 IE5にて確認)

別にJavaScriptのエラーでは無い様な気もするのですが、紫苑さんは、
何故JavaScriptのエラーだと考えたのですか?
それと、

>しかしHTMLを介して動的にMOUSEOVERを行うと上手くいかないんです。このコードだとsort_01()は呼び出されますが、sort_02()は呼び出せません。del()は呼び出せます。

sort_02()のみが呼び出せないような記述ですが、スクリプトエラーが出て呼び出せないのか、
画面に変化が無いだけなのかが判断できません。
画面に変化が無いだけなら、単純にxsl or xmlの記述に抜けがあるだけかもしれませんし、
スクリプトエラーが出ているようなら、スクリプト部分だけではなく、
構成ファイル全体の記述ミスのチェックをするべきでしょう。
(↑幸いにもスクリプトエラーの記述も、場合によって違うようですし)

--
xml、xslの記述チェックには、上記のリンク先のファイルで差し替えてみるのも手かと。
--

全体のファイルの詳細な状態がわからないので、これ以上の事は何とも言えないですね・・・。
紫苑
会議室デビュー日: 2002/07/05
投稿数: 8
投稿日時: 2002-08-23 15:16
返答ありがとうございます。

>とりあえず、上記のURLにあるxml、xsl、dtdファイル+上記のHTMLを利用して、
>JavaScriptの動作確認をしてみました。
>・・・普通に呼び出せました(^_^;)。
>(Win2000 IE5にて確認)

ええ!?単純にコードが間違っていただけなんでしょうか!?
これだけの皆様に迷惑を掛けて大変申し訳ないです。
もう一度確認してみます。

>別にJavaScriptのエラーでは無い様な気もするのですが、紫苑さんは、
>何故JavaScriptのエラーだと考えたのですか?
>sort_02()のみが呼び出せないような記述ですが、
>スクリプトエラーが出て呼び出せないのか、
>画面に変化が無いだけなのかが判断できません。

sort1にカーソルを持っていくと関数が呼び出せるのですが
sort2にカーソルを持っていくとブラウザの下部に「ページでエラーが発生しました」と表示されるため、JavaScriptエラーなのかなと。

お手数をおかけして申し訳ございません。
ありがとうございます。ホント頼りにしております。
紫苑
会議室デビュー日: 2002/07/05
投稿数: 8
投稿日時: 2002-08-23 15:21
コードそのものをイジッテみましたら動作確認できました!

実は皆さんにわかりやすくするために
<xml id="style1" src="style1.xsl">
としておりましたが実際には
<xml id="name" src="style1.xsl">
だったんです。
で、掲示板のように値を変えてみましたら(name→style1)動作しました!
idの属性名にはnameはタブーってことだったんでしょうか!?

とても参考になりました!ありがとうございました。
バグ見つかるわけないですよね。正しいコードを書いて、
「どこがおかしいですか?」って聞いてるんですものね…。

皆様、お手数をおかけしまして申し訳ございませんでした。

次回はもうちょっと頭を使うような質問が出来るようにがんばります。
1

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