2011-06-20 10 views
0

私は最初のFirefox-Extensionを書こうとしています。拡張機能は、XSLTを使用してFOAFファイルをうまく表示することが想定されています。今すぐボタンを押すと、XSLスタイルシートをrdfファイルに追加したいだけです。この関数は呼び出されますが、rdfファイルの表示は変更されません。javascript:xsl-stylesheetをXMLデータに動的に追加する際の問題

function loadXMLDoc(dname) 
{ 
    if (window.XMLHttpRequest) 
    { 
      xhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
      xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhttp.open("GET",dname,false); 
    xhttp.send(""); 
    return xhttp.responseXML; 
} 

function displayMyResult() 
{ 
    alert("test") 
    xml=loadXMLDoc("http://www.example.com/me.rdf"); 
    xsl=loadXMLDoc("http://www.example.com/test.xsl"); 
    if (window.ActiveXObject) 
    { 
      ex=xml.transformNode(xsl); 
      content.document.location.replace(ex) 
    } 
    // code for Mozilla, Firefox, Opera, etc. 
    else if (document.implementation && document.implementation.createDocument) 
    { 
      xsltProcessor=new XSLTProcessor(); 
      xsltProcessor.importStylesheet(xsl); 
      resultDocument = xsltProcessor.transformToFragment(xml,document); 
      content.document.location.replace(ex) 
    } 
} 

最初の関数loadXMLDocは、ここの別の投稿からコピーされているため、おそらく動作するはずです。 ProbemはdisplayMyResultメソッドにあります。テストアラートは関数が呼び出されたが、me.rdfファイルは何も表示されないことを確認します。

content.document.location.replace(ex)という行は間違っていますが、代わりに何を使うべきかを私に説明するものはWeb上に見つからないと思います。

誰でもXLFスタイルシートを読み込んでRDFファイルを表示する方法を教えていただけますか?

答えて

0

Mozilla拡張機能を対象としたコードで、「ActiveXObject」のようなIEオブジェクトがチェックされるのはなぜですか? とにかく、あなたのコードはあまり意味がありません。あなたのMozillaブランチはexという名前の変数に決して割り当てられませんが、replace(ex)を呼び出します。 いくつかのより意味のあるコードが

var resultFragment = xsltProcessor.transformToFragment(xml, content.document); 
content.document.replaceChild(resultFragment, content.document.documentElement); 

だろう。しかしでcontent.documentは、XSLTの結果文書とは異なるタイプである場合、私は特に、一般的に動作することを確認していない(すなわち、1つは、HTML文書であること、もう1つはSVGドキュメントです)。

関連する問題