2012-04-05 2 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'); 

을하지만하고 이러한 문자열 변수를 전달할 자바 스크립트 문자열 변수로서 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); 
}