• ベストアンサー

XSLT javascript Firefox

こんにちは。 XMLの所の質問じゃないかもしれませんが・・・。 javascriptを使ってXSLTを切り替えて 表示するものをXMLファイルから選ぶ、 というプログラムなんですが、IEでは動作するのですがFirefoxでは動作しません。 どなたかご存知ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

試しに作ってみました。 tramsform(xmlFile, xslFile, resultNodeID) という形で、XMLファイルとXSLTファイルそして適用結果を表示するDIV の ID を指定します。 例: tramsform('data.xml', 'style1.xsl', 'XML') IEとFirefox で動作します。 #3のサイトでも書かれているように xml = new ActiveXObject("Microsoft.XMLDOM"); を使うより、XMLHTTPリクエストを使う方がいいのかもしれません。 ---------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <TITLE>XMLの読込とXSLTの適用</TITLE> <SCRIPT TYPE="text/javascript"> <!-- window.onload=function(){ tramsform('data.xml', 'style1.xsl', 'XML'); }; function tramsform(xmlFile, xslFile, resultNodeID){ var xml, xslt, newDoc; if(document.all){ xml = new ActiveXObject("Microsoft.XMLDOM"); xslt = new ActiveXObject("Microsoft.XMLDOM"); } else { xml = document.implementation.createDocument("", "", null); xslt = document.implementation.createDocument("", "", null); } xml.async = false; xslt.async = false; xml.load(xmlFile); xslt.load(xslFile); if(document.all){ document.getElementById(resultNodeID).innerHTML = xml.transformNode(xslt); } else { var xsltp = new XSLTProcessor(); xsltp.importStylesheet(xslt); newDoc = xsltp.transformToFragment(xml, window.document); document.getElementById('XML').innerHTML = ""; document.getElementById('XML').appendChild(newDoc); } } --> </SCRIPT> </HEAD> <BODY> <div id="XML"></div> <button onclick="tramsform('data.xml', 'style1.xsl', 'XML')">スタイル1</button> <button onclick="tramsform('data.xml', 'style2.xsl', 'XML')">スタイル2</button> </BODY> </HTML>

skykey
質問者

お礼

素早い返信ありがとうございます!! なかなか複雑になりそうですね・・・。 しかし両方で動作する方法があって安心しました(無い訳はないか・・・)。 ご丁寧にありがとうございました。 これを参考に頑張ってみます!!

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

http://ponpon-village.net/blog/archives/2005/0709-1851.php 上記サイトがIEとFirefox 両方で動作させるための方法とサンプルを挙げているので参考にして下さい。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

すいません、補足のメールが届かなくて、補足がついたのを気がつきませんでした。返事が遅くなったとしたらすみませんです。 ところで、IEとFirefox では、XMLとXSLTについてかなり違います。 http://www.mozilla-japan.org/projects/xslt/ 及び http://www.mozilla-japan.org/projects/xslt/js-interface.html を参考にされると良いと思います。 以前ちょっとIEとFirefox で同じように動作するようにXMLをjavascript から扱うスクリプトを書いてみたことがあるのですが、 いっそブラウザで判別して専用ページに飛ばした方が楽だと思います。

すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

どんなふうに書いているのですか?

skykey
質問者

補足

返信ありがとうございます。 http://www6.airnet.ne.jp/manyo/xml/sample2/home.html を参考にいたしましたので、これとほぼ同じです。

すると、全ての回答が全文表示されます。

関連するQ&A