⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsltransform.js

📁 基于Php和Mysql的项目管理软件
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.xml.XslTransform");dojo.xml.XslTransform = function(/*String*/xsltUri){	//	summary:	//		dojo.xml.XslTransform is a convenience object that takes the URI	//		String of an XSL file as a constructor argument. After each	//		transformation all parameters will be cleared. Transformation is	//		supported by IE, Mozilla, and partially by Opera. Other browsers	//		(notably Safari) have not yet exposed their transformation	//		primtives well enough to be useful.	// xsltUri:	//		Url of the xslt document to transform nodes with. Transformation is	//		acheived with the transformTo* methods on instances of this class.	dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, with limited support in Opera 9 (no document function support).");	var IS_IE = dojo.render.html.ie;	var ACTIVEX_DOMS = [		"Msxml2.DOMDocument.5.0", 		"Msxml2.DOMDocument.4.0", 		"Msxml2.DOMDocument.3.0", 		"MSXML2.DOMDocument", 		"MSXML.DOMDocument", 		"Microsoft.XMLDOM"	];	var ACTIVEX_FT_DOMS = [		"Msxml2.FreeThreadedDOMDocument.5.0", 		"MSXML2.FreeThreadedDOMDocument.4.0", 		"MSXML2.FreeThreadedDOMDocument.3.0"	];	var ACTIVEX_TEMPLATES = [		"Msxml2.XSLTemplate.5.0", 		"Msxml2.XSLTemplate.4.0", 		"MSXML2.XSLTemplate.3.0"	];  	function getActiveXImpl(activeXArray){		for(var i=0; i < activeXArray.length; i++){			try{				var testObj = new ActiveXObject(activeXArray[i]);				if(testObj){					return activeXArray[i];				}			}catch(e){}		}		dojo.raise("Could not find an ActiveX implementation in:\n\n " + activeXArray);	}        if(xsltUri == null || xsltUri == undefined){        dojo.raise("You must pass the URI String for the XSL file to be used!");        return false;    }    	var xsltDocument = null;	var xsltProcessor = null;	if(IS_IE){		xsltDocument = new ActiveXObject(getActiveXImpl(ACTIVEX_FT_DOMS));		xsltDocument.async = false;	}else{		xsltProcessor = new XSLTProcessor();		xsltDocument = document.implementation.createDocument("", "", null);		xsltDocument.addEventListener("load", onXslLoad, false);	}	xsltDocument.load(xsltUri);	if(IS_IE){		var xslt = new ActiveXObject(getActiveXImpl(ACTIVEX_TEMPLATES));		xslt.stylesheet = xsltDocument;  		xsltProcessor = xslt.createProcessor();	}	function onXslLoad(){		xsltProcessor.importStylesheet(xsltDocument); 	}	function getResultDom(xmlDoc, params){		if(IS_IE){			addIeParams(params);			var result = getIeResultDom(xmlDoc);			removeIeParams(params);   			return result;		}else{			return getMozillaResultDom(xmlDoc, params);		}	}	function addIeParams(params){		if(!params){ return; }		for(var i=0; i<params.length; i++){			xsltProcessor.addParameter(params[i][0], params[i][1]);		}	}    function removeIeParams(params){		if(!params){ return; }		for(var i=0; i<params.length; i++){			xsltProcessor.addParameter(params[i][0], "");		}    }	function getIeResultDom(xmlDoc){		xsltProcessor.input = xmlDoc;		var outDoc = new ActiveXObject(getActiveXImpl(ACTIVEX_DOMS));		outDoc.async = false;  		outDoc.validateOnParse = false;		xsltProcessor.output = outDoc;		xsltProcessor.transform();		if(outDoc.parseError.errorCode != 0){			var err = outDoc.parseError;			dojo.raise("err.errorCode: " + err.errorCode + "\n\nerr.reason: " + err.reason + "\n\nerr.url: " + err.url + "\n\nerr.srcText: " + err.srcText);		}		return outDoc;	}	function getIeResultStr(xmlDoc, params){		xsltProcessor.input = xmlDoc;		xsltProcessor.transform();    		return xsltProcessor.output;	}	function addMozillaParams(params){		if(!params){ return; }		for(var i=0; i<params.length; i++){			xsltProcessor.setParameter(null, params[i][0], params[i][1]);		}	}	function getMozillaResultDom(xmlDoc, params){		addMozillaParams(params);		var resultDoc = xsltProcessor.transformToDocument(xmlDoc);		xsltProcessor.clearParameters();		return resultDoc;	}	function getMozillaResultStr(xmlDoc, params, parentDoc){		addMozillaParams(params);		var resultDoc = xsltProcessor.transformToFragment(xmlDoc, parentDoc);		var serializer = new XMLSerializer();		xsltProcessor.clearParameters();		return serializer.serializeToString(resultDoc);	}	this.getResultString = function(	/*XMLDocument*/xmlDoc, 										/*2 Dimensional Array*/params, 										/*HTMLDocument*/parentDoc){		// summary:		//		transform the xmlDoc and return the result as a string.		// xmlDoc: an XML Document to transform		// params:		//		a set of configuration parameters to pass to the transformation		//		engine.		// parentDoc: The HTML docuemnt to transform the subdocument "under"		var content = null;		if(IS_IE){			addIeParams(params);			content = getIeResultStr(xmlDoc, params);			removeIeParams(params);  		}else{			content = getMozillaResultStr(xmlDoc, params, parentDoc);		} 		//dojo.debug(content);		return content;	};	this.transformToContentPane = function(	/*XMLDocument*/xmlDoc,											/*2 Dimensional Array*/params, 											/*ContentPane*/contentPane, 											/*HTMLDocument*/parentDoc){		// summary:		//		transform the xmlDoc and put the result into the passed		//		ContentPane instance		// xmlDoc: an XML Document to transform		// params:		//		a set of configuration parameters to pass to the transformation		//		engine.		// contentPane:		//		instance of dojo.widget.ContentPane to assign the transform		//		results to		// parentDoc: The HTML docuemnt to transform the subdocument "under"		// FIXME: do we need this function?		var content = this.getResultString(xmlDoc, params, parentDoc);		contentPane.setContent(content);	};	this.transformToRegion = function(	/*XMLDocument*/xmlDoc, 										/*2 Dimensional Array*/params, 										/*HTMLElement*/region, 										/*HTMLDocument*/parentDoc){		// summary:		//		transform the xmlDoc and put the result into the passed		//		DomNode using innerHTML		// xmlDoc: an XML Document to transform		// params:		//		a set of configuration parameters to pass to the transformation		//		engine.		// region: node to put transform results in		// parentDoc: The HTML docuemnt to transform the subdocument "under"		try{			var content = this.getResultString(xmlDoc, params, parentDoc);			region.innerHTML = content;		}catch (e){			dojo.raise(e.message + "\n\n xsltUri: " + xsltUri)		}	};	this.transformToDocument = function(	/*XMLDocument*/ xmlDoc, 											/*2 Dimensional Array*/params){		// summary:		//		transform the xmlDoc and return a new XML document containing		//		the result		// xmlDoc: an XML Document to transform		// params:		//		a set of configuration parameters to pass to the transformation		//		engine.		return getResultDom(xmlDoc, params); // XMLDocument	}	this.transformToWindow = function(	/*XMLDocument*/ xmlDoc,										/*2 Dimensional Array*/params, 										/*HTMLDocument*/windowDoc, 										/*HTMLDocument*/parentDoc){		// summary:		//		transform the xmlDoc and put the contents in the passed		//		windowDoc, blowing away any previous contents.		// xmlDoc: an XML Document to transform		// params:		//		a set of configuration parameters to pass to the transformation		//		engine.		// windowDoc: the HTMLDocument to assign the contents to		// parentDoc: The HTML docuemnt to transform the subdocument "under"		try{			windowDoc.open();			windowDoc.write(this.getResultString(xmlDoc, params, parentDoc));			windowDoc.close();		}catch(e){			dojo.raise(e.message + "\n\n xsltUri: " + xsltUri)		}	};};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -