After did some study and some try and errors at last I got the solution. Using JQuery Transform plugin .But still need to do some changes.
Once you downloaded it, open jquery.transform.js. Replace the var safariimportincludefix = function(xObj,rootConfig){} with
var safariimportincludefix = function(xObj,rootConfig) { var vals = $.merge($.makeArray(xObj.getElementsByTagName("import")),$.makeArray(xObj.getElementsByTagName("include"))); for(var x=0;x<vals.length;x++) { var node = vals[x]; $.ajax({ passData : { node : node, xObj : xObj, rootConfig : rootConfig}, dataType : "xml", async : false, url : replaceref(node.getAttribute("href"),rootConfig), success : function(xhr) { try { var _ = this.passData; xhr = safariimportincludefix(xhr,_.rootConfig); var imports = $.merge(childNodes(xhr.getElementsByTagName("stylesheet")[0],"param"),childNodes(xhr.getElementsByTagName("stylesheet")[0],"template")); var excistingNodes = []; try { var sheet = _.xObj; var params = childNodes(sheet,"param"); var stylesheets = childNodes(sheet,"template"); existingNodes = $.merge(params,stylesheets); } catch(exception) { var x = exception; } var existingNames = []; var existingMatches = []; for(var a=0;a<existingNodes.length;a++) { if(existingNodes[a].getAttribute("name")) { existingNames[existingNodes[a].getAttribute("name")] = true; } else { existingMatches[existingNodes[a].getAttribute("match")] = true; } } var pn = _.node.parentNode; for(var y=0;y<imports.length;y++) { if(!existingNames[imports[y].getAttribute("name")] && !existingMatches[imports[y].getAttribute("match")]) { var clonednode = _.xObj.ownerDocument.importNode(imports[y],true); //pn.insertBefore(clonednode,_.xObj); pn.insertBefore(clonednode,childNodes(_.xObj,"template")[0]); } } pn.removeChild(_.node); } catch(ex) { } } }); } return xObj; };
Then just call the script from your html header. Below some codes that show how to execute it.
Snippet that demonstrates how to call jquery
var animalElementArray = response.getElementsByTagName("animal"); var animalTable = dojo.byId("animal"); var tbodyArray=animalTable.getElementsByTagName("tbody"); if (animalTable != null){ if (animalTable.getElementsByTagName("tbody")[0] != null){ var tbodysArray = animalTable.getElementsByTagName("tbody"); for(p=0;p< tbodysArray.length;p++){ animalTable.removeChild(tbodysArray[p]); } } } var newtbody; if (animalTable.getElementsByTagName("tbody").length==0) newtbody = document.createElement('tbody'); else { newtbody=animalTable.getElementsByTagName("tbody")[0]; removeChildNodes(newtbody); } newtbody.setAttribute('id','animaltbody'); if(dojo.isChrome || dojo.isSafari){ xsl=loadXMLDoc("/xslt/animal.xslt"); try { resultDocument= $.transform({el:"resultDocument",async:false, xmlobj: response.documentElement, xslobj: xsl,xslParams:{name:"cat",type:"mammal"}}); var tbody = resultDocument; var animalTableParent = animalTable.parentNode; animalTableParent.innerHTML = tbody; } catch (exception) { if (typeof (exception) == "object" && exception.message) alert(exception.message); else alert(exception); } }
function loadXMLDoc(file) { var xmlDoc; // code for IE if (window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.load(file); } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { var xmlhttp = new window.XMLHttpRequest(); xmlhttp.open("GET",file,false); xmlhttp.send(null); var xmlDoc = xmlhttp.responseXML.documentElement; } else { alert('Your browser cannot handle this script'); } return(xmlDoc); }
http://stackoverflow.com/questions/2042178/chrome-and-safari-xslt-using-javascript
http://daersystems.com/jquery/transform/