2

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

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');

しかし、xmlを文字列変数としてjavascriptに保存してから、これらの文字列変数をinitメソッドに渡す必要があります。例:

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

1 に答える 1

2

loadXml代わりに使用してください-http://msdn.microsoft.com/en-us/library/windows/desktop/ms754585(v= vs.85load ).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); 
} 
于 2012-04-05T14:20:21.783 に答える