xsltkeys.js

来自「XML path visualiser」· JavaScript 代码 · 共 77 行

JS
77
字号
	var theDelim = "\r";
	var xsltNamespaceURI = "http://www.w3.org/1999/XSL/Transform";

	function addXSLTKey(Name, Match, Use, bModified)
	{
		if(!bModified) // Create a new xsl:key
		{
			var nodeKey = theStylesheet.createNode(1, "xsl:key",
								 xsltNamespaceURI);
			nodeKey.setAttribute("name", Name);
			nodeKey.setAttribute("match", Match);
			nodeKey.setAttribute("use", Use);
			
			nodeStylesheet.insertBefore(nodeKey, nodeStylesheetParam);	
		}
		else // Modify an existing xsl:key -- new values for @match, @use
		{
			modifyXSLTKey(Name, Name, Match, Use);
			var nodeKey = theStylesheet.selectSingleNode(
					"/xsl:stylesheet/xsl:key[@name='" + Name + "']");
			  nodeKey.setAttribute("match", Match);
			  nodeKey.setAttribute("use", Use);
		}
	}
	
	function modifyXSLTKey(Name, newName, newMatch, newUse)
	{
		var nodeKey = theStylesheet.selectSingleNode(
				"/xsl:stylesheet/xsl:key[@name='" + Name + "']");
			  nodeKey.setAttribute("name", newName);
			  nodeKey.setAttribute("match", newMatch);
			  nodeKey.setAttribute("use", newUse);
	}
	
	function deleteXSLTKey(varName)
	{
		var nodeKey = theStylesheet.selectSingleNode(
					"/xsl:stylesheet/xsl:key[@name='" + varName + "']");

		nodeKey = nodeStylesheet.removeChild(nodeKey);
		nodeKey = null;
	}
	
	function removeXSLTKeys(ExistingKeys)
	{
		var i = ExistingKeys.length - 1;
		
		while(i >= 0)
		{
			var varEntry = ExistingKeys[i];
			var idx   = varEntry.indexOf(theDelim);
			var name  = varEntry.substr(0, idx);

			deleteXSLTKey(name);
			i--;
		}
	}
	
	function restoreXSLTKeys(ExistingKeys)
	{
		var i = ExistingKeys.length - 1;
		
		while(i >= 0)
		{
			var varEntry = ExistingKeys[i];
			var arrCells = new Array(3);
			arrCells  = varEntry.split(theDelim);
			var name  = arrCells[0];
			var match = arrCells[1];
			var use   = arrCells[2];

			addXSLTKey(name, match, use, false);
			i--;
		}
}

⌨️ 快捷键说明

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