How can I use JavaScript to transform XML & XSLT?

前端 未结 5 1408
轻奢々
轻奢々 2020-11-29 04:24

I want to use JavaScript to show my XSLT, but on my server nothing is showing up in the browser.



        
5条回答
  •  难免孤独
    2020-11-29 04:50

    This works in Chrome/Firefox/Edge/IE11

     function loadXMLDoc(filename) {
         if (window.ActiveXObject || "ActiveXObject" in window) {
             xhttp = new ActiveXObject("Msxml2.XMLHTTP");
         } else {
             xhttp = new XMLHttpRequest();
         }
         xhttp.open("GET", filename, false);
         xhttp.send("");
         return xhttp.responseXML;
     }
    
    
     if (window.ActiveXObject || "ActiveXObject" in window) {
         ie();
     } else {
    
         xml = loadXMLDoc("input.xml");
         xsl = loadXMLDoc("mmlctop2_0.xsl");
    
         if (document.implementation && document.implementation.createDocument) {
             xsltProcessor = new XSLTProcessor();
             xsltProcessor.importStylesheet(xsl);
             resultDocument = xsltProcessor.transformToDocument(xml, document);
    
             var serializer = new XMLSerializer();
             var transformed = serializer.serializeToString(resultDocument.documentElement);
    
             alert(transformed);
         }
     }
    
     // https://msdn.microsoft.com/en-us/library/ms753809(v=vs.85).aspx
     function ie() {
    
         var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
         var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
         var xslProc;
         xslDoc.async = false;
         xslDoc.load("mmlctop2_0.xsl");
         if (xslDoc.parseError.errorCode != 0) {
             var myErr = xslDoc.parseError;
             alert("You have error " + myErr.reason);
         } else {
             xslt.stylesheet = xslDoc;
             var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
             xmlDoc.async = false;
             xmlDoc.load("input.xml");
             if (xmlDoc.parseError.errorCode != 0) {
                 var myErr = xmlDoc.parseError;
                 alert("You have error " + myErr.reason);
             } else {
                 xslProc = xslt.createProcessor();
                 xslProc.input = xmlDoc;
                 xslProc.addParameter("param1", "Hello");
                 xslProc.transform();
                 alert(xslProc.output);
             }
         }
    
    
     }
    

提交回复
热议问题