setAttributeNS method

void setAttributeNS(
  1. String? namespaceUri,
  2. String name,
  3. String value
)

Implementation

void setAttributeNS(String? namespaceUri, String name, String value) {
  //
  // Loosely based on:
  // https://dom.spec.whatwg.org/#dom-element-setattributens
  //

  _validateAttributeName('setAttributeNS', namespaceUri, name);

  namespaceUri ??= '';

  if (!_isXml) {
    name = name.toLowerCase();

    if (name == 'style' && namespaceUri == '') {
      _setAttribute('style', value);
      return;
    }
  }

  final qualifiedName = name;
  var localName = qualifiedName;
  final i = localName.indexOf(':');
  if (i >= 0) {
    localName = localName.substring(i + 1);
  }

  _Attribute? previous;
  var attribute = _firstAttribute;
  while (attribute != null) {
    if (attribute._localName == localName &&
        attribute._namespaceUri == namespaceUri) {
      attribute.value = value;
      return;
    }
    previous = attribute;
    attribute = attribute._next;
  }
  final newAttribute = _Attribute(
    true,
    namespaceUri,
    qualifiedName,
    localName,
    value,
  );
  if (previous == null) {
    _firstAttribute = newAttribute;
  } else {
    previous._next = newAttribute;
  }
}