2012-04-05 41 views
1

xsltおよびxmlを文字列として使用してxslt変換を実行する方法をいくつか試しています。 xmlファイルのURLを渡すと、load()メソッドを使用して正常に動作します。MSXML 2.0を使用してXSLT変換を実行する

function init(xml, xslt) { 
    var srcTree = new ActiveXObject("Msxml2.DOMDocument.6.0"); 
    srcTree.async=false; 
    srcTree.load(xml); 
    var xsltTree= new ActiveXObject("Msxml2.DOMDocument.6.0"); 
    xsltTree.async = false; 
    xsltTree.load(xslt); 
    var resTree = document.getElementById("HTMLData"); 
    resTree.innerHTML = srcTree.transformNode(xsltTree); 
} 

上記の方法では、xmlとxsltの場所(url)を渡しています。しかし、要件ごとに、xmlとxslt全体を文字列として渡す必要があります(<?xml version= ....など)。 あなたが私の質問を理解するのが難しいと思うなら、この質問 は容易に理解できないとコメントしてください。前もって感謝します。

編集:

上記関数は(例えば)を使用して呼び出すことができる。

init('/myfiles/xml/books.xml', '/myfiles/xslt/style.xslt'); 

しかし、私はJavaScriptで文字列変数としてXMLを格納した後にこれらの文字列 変数を渡す必要がありますinitメソッド。例:

var xmlDocument = '<?xml version='1'?><books>....</books>'; 
var xsltDocument = '<?xml version='1'?><xsl xmlns:xsl='...'....</xsl>'; 
init(xmlDocument, xsltDcoument); 
+0

を参照してください! IEだけのソリューションを作ってはいけません。私たちはもう1990年代ではありません。 – ThiefMaster

+0

ええ、あなたは絶対に正しいですが、クライアントはIEでのみ動作するよう厳密に要求しています!! –

+0

他のブラウザでもうまくいけば、それはまだ良いことです。 – ThiefMaster

答えて

1

使用loadXml代わりに、よりload - あなたは、これはIEのみで動作することを実現http://msdn.microsoft.com/en-us/library/windows/desktop/ms754585(v=vs.85).aspx

function init(xml, xslt) { 
    var srcTree = new ActiveXObject("Msxml2.DOMDocument.6.0"); 
    srcTree.async=false; 
    srcTree.loadXml(xml); 
    var xsltTree= new ActiveXObject("Msxml2.DOMDocument.6.0"); 
    xsltTree.async = false; 
    xsltTree.loadXml(xslt); 
    var resTree = document.getElementById("HTMLData"); 
    resTree.innerHTML = srcTree.transformNode(xsltTree); 
} 
関連する問題