src/sap.ui.core/src/sap/ui/core/util/XMLPreprocessor.js
function (fnVisitor, sNamespace, sLocalName) {
			var fnOldVisitor = mVisitors[sNamespace];

			if (fnVisitor !== null && typeof fnVisitor !== "function"
					|| fnVisitor === visitNodeWrapper) {
				throw new Error("Invalid visitor: " + fnVisitor);
			}
			if (!sNamespace || sNamespace === sNAMESPACE || sNamespace === "sap.ui.core"
					|| sNamespace.indexOf(" ") >= 0) {
				throw new Error("Invalid namespace: " + sNamespace);
			}
			Log.debug("Plug-in visitor for namespace '" + sNamespace + "', local name '"
				+ sLocalName + "'", fnVisitor, sXMLPreprocessor);
			if (sLocalName) {
				sNamespace = sNamespace + " " + sLocalName;
				fnOldVisitor = mVisitors[sNamespace] || fnOldVisitor;
			}
			mVisitors[sNamespace] = fnVisitor;
			return fnOldVisitor || visitNodeWrapper;
		}
function (fnVisitor, sNamespace, sLocalName) {
			var fnOldVisitor = mVisitors[sNamespace];

			if (fnVisitor !== null && typeof fnVisitor !== "function"
					|| fnVisitor === visitNodeWrapper) {
				throw new Error("Invalid visitor: " + fnVisitor);
			}
			if (!sNamespace || sNamespace === sNAMESPACE || sNamespace === "sap.ui.core"
					|| sNamespace.indexOf(" ") >= 0) {
				throw new Error("Invalid namespace: " + sNamespace);
			}
			Log.debug("Plug-in visitor for namespace '" + sNamespace + "', local name '"
				+ sLocalName + "'", fnVisitor, sXMLPreprocessor);
			if (sLocalName) {
				sNamespace = sNamespace + " " + sLocalName;
				fnOldVisitor = mVisitors[sNamespace] || fnOldVisitor;
			}
			mVisitors[sNamespace] = fnVisitor;
			return fnOldVisitor || visitNodeWrapper;
		}
function ( fnVisitor , sNamespace , sLocalName ) { var fnOldVisitor = mVisitors [ sNamespace ] ; if ( fnVisitor !== null && typeof fnVisitor !== "function" || fnVisitor === visitNodeWrapper ) { throw new Error ( "Invalid visitor: " + fnVisitor ) ; } if ( ! sNamespace || sNamespace === sNAMESPACE || sNamespace === "sap.ui.core" || sNamespace . indexOf ( " " ) >= 0 ) { throw new Error ( "Invalid namespace: " + sNamespace ) ; } Log . debug ( "Plug-in visitor for namespace '" + sNamespace + "', local name '" + sLocalName + "'" , fnVisitor , sXMLPreprocessor ) ; if ( sLocalName ) { sNamespace = sNamespace + " " + sLocalName ; fnOldVisitor = mVisitors [ sNamespace ] || fnOldVisitor ; } mVisitors [ sNamespace ] = fnVisitor ; return fnOldVisitor || visitNodeWrapper ; }
Plug-in the given visitor which is called for each matching XML element.

@param {function} [fnVisitor]
Visitor function, will be called with the matching XML DOM element and a
{@link sap.ui.core.util.XMLPreprocessor.ICallback callback interface} which uses a map
of currently known variables; must return <code>undefined</code>.
Must be either a function or <code>null</code>, nothing else.
@param {string} sNamespace
The expected namespace URI; must not contain spaces;
"http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1" and "sap.ui.core" are
reserved
@param {string} [sLocalName]
The expected local name; if it is missing, the local name is ignored for a match.
@returns {function}
The visitor function which previously matched elements with the given namespace and
local name, or a function which calls "visitNode" but never <code>null</code> so that
you can safely delegate to it.
In general, you cannot restore the previous state by calling <code>plugIn</code> again
with this function.
@throws {Error}
If visitor or namespace is invalid

@private
Plug - in the given visitor which is called for each matching XML element .