Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Преобразование XML/XSLT в ИЕ (https://javascript.ru/forum/css-html-internet-explorer/17607-preobrazovanie-xml-xslt-v-ie.html)

maximvg 25.05.2011 20:30

Преобразование XML/XSLT в ИЕ
 
В ИЕ почему-то не хочется добавляться параметр в XML/XSLT преобразование

domDocument = 
{
	load_file : function(xmlfile)
	{
		if (window.XMLHttpRequest)
		{
			xhttp=new XMLHttpRequest();
		}
		else
		{
			alert("Hello!");
			xhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}

		xhttp.open("GET",xmlfile,false);
		xhttp.send("");
		return xhttp.responseXML;
	},   

	load_string : function(xmlstr)
	{   
		if(document.implementation && document.implementation.createDocument)
	    {    
			var parser = new DOMParser();
			var doc = parser.parseFromString(xmlstr,"text/xml");
	    }
    	else if(window.ActiveXObject)
    	{   
			var doc = Try.these(
				function() { new ActiveXObject('Microsoft.XMLDOM')			  },
				function() { return new ActiveXObject('Microsoft.DomDocument')},
				function() { return new ActiveXObject('MSXML.DomDocument')    },
				function() { return new ActiveXObject('MSXML2.DomDocument')   },
				function() { return new ActiveXObject('MSXML3.DomDocument')   }
			) || false;

	        doc.async = false;
    	    doc.load(xmlstr);
    	}
    	return doc || null;
	},   

	xslt : function(xmldoc,xsldoc,param)
	{   
	try
	{
		if(document.implementation && document.implementation.createDocument)
	    {   
			var proc = new XSLTProcessor();
	        proc.importStylesheet(xsldoc);
			
			if (param){
				params = explode(", ", param);
				for (i = 0; i<params.length; i = i+2){
					if (!params[i] || !params[i+1]) continue;
					name = params[i];
					value = params[i+1];
					proc.setParameter(null, name, value);
				}
			}
			
    	    var xhtmldoc = proc.transformToDocument(xmldoc);
        	var ser = new XMLSerializer();
	        return ser.serializeToString(xhtmldoc);
    	}
	    else if(window.ActiveXObject)
    	{   

			if (param){
				params = explode(", ", param);
				for (i = 0; i<params.length; i = i+2){
					if (!params[i] || !params[i+1]) continue;
					name = params[i];
					value = params[i+1];
					alert(name+value);
					xmldoc.setParameter(null, name, value);
				}
			}

			return xmldoc.transformNode(xsldoc);
	    }
	} catch (e) {}
	},   

	asXML : function(xmldoc)
	{   
		if(document.implementation && document.implementation.createDocument)
	    {   
			var ser = new XMLSerializer();
	        return ser.serializeToString(xmldoc);
    	}
	    else if(window.ActiveXObject)
    	{   
			return xmldoc.xml;
	    }
	}    
}


Собственно сама проблема лежит тут:

else if(window.ActiveXObject)
    	{   

			if (param){
				params = explode(", ", param);
				for (i = 0; i<params.length; i = i+2){
					if (!params[i] || !params[i+1]) continue;
					name = params[i];
					value = params[i+1];
					alert(name+value);
					xmldoc.setParameter(null, name, value);
				}
			}

			return xmldoc.transformNode(xsldoc);
	    }


Без xmldoc.setParameter(null, name, value); все работает, с xmldoc.setParameter(null, name, value); xshtml получаю undefuned.

В чем дело, объясните?


Часовой пояс GMT +3, время: 11:45.