function resolveAttributeBinding(oElement, oAttribute, oWithControl) {
				var oPromise = getResolvedBinding(oAttribute.value, oElement, oWithControl, false);

				if (!oPromise) {
					debug(oElement, 'Binding not ready for attribute', oAttribute.name);
					return oSyncPromiseResolved;
				}
				return oPromise.then(function (vValue) {
					if (vValue === undefined) {
						// if the formatter returns null, the value becomes undefined
						// (the default value of _With.any)
						debug(oElement, "Removed attribute", oAttribute.name);
						oElement.removeAttributeNode(oAttribute);
					} else if (vValue !== oAttribute.value) {
						switch (typeof vValue) {
						case "boolean":
						case "number":
						case "string":
							debug(oElement, oAttribute.name, "=", vValue);
							oAttribute.value = vValue;
							break;

						default: // e.g. "function" or "object"; "undefined": see above
							debug(oElement, "Ignoring", fnToString.call(vValue),
								"value for attribute", oAttribute.name);
						}
					}
				}, function (oError) {
					// just don't replace XML attribute value
					debug(oElement, "Error in formatter of attribute", oAttribute.name, oError);
				});
			}
/**
			 * Visit the given XML DOM attribute which represents any attribute of any element
			 * (other than template instructions). If the attribute value represents a binding
			 * expression, we try to resolve it using the "with" control instance.
			 *
			 * @param {Element} oElement
			 *   the owning XML DOM element
			 * @param {Attr} oAttribute
			 *   any XML DOM attribute node
			 * @param {sap.ui.core.util._with} oWithControl the "with" control
			 * @returns {sap.ui.base.SyncPromise}
			 *   A sync promise which resolves with <code>undefined</code> as soon as the binding
			 *   has been resolved, or is rejected with a corresponding error if getting the
			 *   binding's value fails.
			 */
Visit the given XML DOM attribute which represents any attribute of any element
(other than template instructions). If the attribute value represents a binding
expression, we try to resolve it using the "with" control instance.

@param {Element} oElement
the owning XML DOM element
@param {Attr} oAttribute
any XML DOM attribute node
@param {sap.ui.core.util._with} oWithControl the "with" control
@returns {sap.ui.base.SyncPromise}
A sync promise which resolves with undefined as soon as the binding
has been resolved, or is rejected with a corresponding error if getting the
binding's value fails.
Visit the given XML DOM attribute which represents any attribute of any element ( other than template instructions ) . If the attribute value represents a binding expression we try to resolve it using the " with " control instance . @param { Element } oElement the owning XML DOM element @param { Attr } oAttribute any XML DOM attribute node @param { sap . ui . core . util . _with } oWithControl the " with " control @returns { sap . ui . base . SyncPromise } A sync promise which resolves with undefined as soon as the binding has been resolved or is rejected with a corresponding error if getting the binding ' s value fails .
function resolveAttributeBinding(oElement, oAttribute, oWithControl) {
				var oPromise = getResolvedBinding(oAttribute.value, oElement, oWithControl, false);
				if (!oPromise) {
					debug(oElement, 'Binding not ready for attribute', oAttribute.name);
					return oSyncPromiseResolved;
				}
				return oPromise.then(function (vValue) {
					if (vValue === undefined) {
						debug(oElement, "Removed attribute", oAttribute.name);
						oElement.removeAttributeNode(oAttribute);
					} else if (vValue !== oAttribute.value) {
						switch (typeof vValue) {
						case "boolean":
						case "number":
						case "string":
							debug(oElement, oAttribute.name, "=", vValue);
							oAttribute.value = vValue;
							break;
						default: 
							debug(oElement, "Ignoring", fnToString.call(vValue),
								"value for attribute", oAttribute.name);
						}
					}
				}, function (oError) {
					debug(oElement, "Error in formatter of attribute", oAttribute.name, oError);
				});
			}
function resolveAttributeBinding ( oElement , oAttribute , oWithControl ) { var oPromise = getResolvedBinding ( oAttribute . value , oElement , oWithControl , false ) ; if ( ! oPromise ) { debug ( oElement , 'Binding not ready for attribute' , oAttribute . name ) ; return oSyncPromiseResolved ; } return oPromise . then ( function ( vValue ) { if ( vValue === undefined ) { debug ( oElement , "Removed attribute" , oAttribute . name ) ; oElement . removeAttributeNode ( oAttribute ) ; } else if ( vValue !== oAttribute . value ) { switch ( typeof vValue ) { case "boolean" : case "number" : case "string" : debug ( oElement , oAttribute . name , "=" , vValue ) ; oAttribute . value = vValue ; break ; default : debug ( oElement , "Ignoring" , fnToString . call ( vValue ) , "value for attribute" , oAttribute . name ) ; } } } , function ( oError ) { debug ( oElement , "Error in formatter of attribute" , oAttribute . name , oError ) ; } ) ; }
Visit the given XML DOM attribute which represents any attribute of any element
 (other than template instructions).
Visit the given XML DOM attribute which represents any attribute of any element ( other than template instructions ) .
// if the formatter returns null, the value becomes undefined // (the default value of _With.any) // e.g. "function" or "object"; "undefined": see above // just don't replace XML attribute value