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 === null || vValue === undefined) {
						// if the formatter returns null, the value may become 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.