重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは。
XMLの所の質問じゃないかもしれませんが・・・。

javascriptを使ってXSLTを切り替えて
表示するものをXMLファイルから選ぶ、
というプログラムなんですが、IEでは動作するのですがFirefoxでは動作しません。

どなたかご存知ですか?

A 回答 (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>
    • good
    • 0
この回答へのお礼

素早い返信ありがとうございます!!

なかなか複雑になりそうですね・・・。
しかし両方で動作する方法があって安心しました(無い訳はないか・・・)。

ご丁寧にありがとうございました。
これを参考に頑張ってみます!!

お礼日時:2006/04/16 11:47

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

すいません、補足のメールが届かなくて、補足がついたのを気がつきませんでした。

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

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

この回答への補足

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

補足日時:2006/04/15 17:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!