Документация DHTML 
| Документация DHTML | Документация Smarty | SVG/VML Графика и JavaScript
| Документация bash |
Глава 4.3. Узлы дерева документа
В этой главе мы рассматриваем базовый тип узлов дерева документа и списки, образованные такими узлами.
4.3.1. Абстрактный узел: интерфейс Node
Поддержка:Поддерживается для XML-документов (XMLDOMNode); для HTML-документов поддерживается частично.
DOM 1 полностью, DOM 2 частично.
Интерфейс Node соответствует абстрактному узлу дерева XML- или HTML-документа. Все конкретные составляющие документа реализуются интерфейсами, которые являются его потомками. Тип узла задается значением его свойства nodeType в соответствии со следующей таблицей:
| Название | Значение | Интерфейс | Описание | 
|---|---|---|---|
| ELEMENT_NODE | 1 | Element | Элемент | 
| ATTRIBUTE_NODE | 2 | Attr | Атрибут | 
| TEXT_NODE | 3 | Text | Текст | 
| CDATA_SECTION_NODE | 4 | CDATASection | Секция CDATA | 
| ENTITY_REFERENCE_NODE | 5 | EntityReference | Ссылка на раздел | 
| ENTITY_NODE | 6 | Entity | Раздел документа | 
| PROCESSING_INSTRUCTION_NODE | 7 | ProcessingInstruction | Директива | 
| COMMENT_NODE | 8 | Comment | Комментарий | 
| DOCUMENT_NODE | 9 | Document | Документ | 
| DOCUMENT_TYPE_NODE | 10 | DocumentType | Тип документа | 
| DOCUMENT_FRAGMENT_NODE | 11 | DocumentFragment | Фрагмент документа | 
| NOTATION_NODE | 12 | Notation | Нотация | 
Значения свойств узла nodeName, nodeValue и attributes меняются в зависимости от его типа:
| Интерфейс | nodeName | nodeValue | attributes | 
|---|---|---|---|
| Attr | Имя атрибута | Значение атрибута | null | 
| CDATASection | #cdata-section | Содержимое секции CDATA | null | 
| Document | #document | null | null | 
| DocumentFragment | #document-fragment | null | null | 
| DocumentType | Имя типа документа | null | null | 
| Element | Тег элемента | null | NamedNodeMap | 
| Entity | Имя раздела | null | null | 
| EntityReference | Имя раздела | null | null | 
| Notation | Имя нотации | null | null | 
| ProcessingInstruction | Имя директивы | Содержимое директивы | null | 
| Text | #text | Содержимое текстового узла | null | 
Примечание. Internet Explorer поддерживает только узлы типа Element, Attr и Text. Для остальных типов узлов перечисленные в таблице свойства не определены.
| Свойство | Изменяемое | Модель | Описание | 
|---|---|---|---|
| attributes | Нет | DOM 1 | Атрибуты узла. | 
| childNodes | Нет | DOM 1 | Список детей. | 
| firstChild | Нет | DOM 1 | Первый ребенок. | 
| lastChild | Нет | DOM 1 | Последний ребенок. | 
| localName | Нет | DOM 2 | Локальное имя в пространстве имен. | 
| namespaceURI | Нет | DOM 2 | URI пространства имен. | 
| nextSibling | Нет | DOM 1 | Следующий узел дерева. | 
| nodeName | Нет | DOM 1 | Имя узла. | 
| nodeType | Нет | DOM 1 | Тип узла. | 
| nodeValue | Да | DOM 1 | Значение узла. | 
| ownerDocument | Нет | DOM 1 | Документ  владелец узла. | 
| parentNode | Нет | DOM 1 | Отец данного узла. | 
| prefix | Да | DOM 2 | Префикс пространства имен. | 
| previousSibling | Нет | DOM 1 | Предыдущий узел дерева. | 
| Свойство | Модель | Описание | 
|---|---|---|
| appendChild | DOM 1 | Добавляет сына в конец списка детей. | 
| cloneNode | DOM 1 | Создает копию данного узла. | 
| hasAttrbutes | DOM 2 | Проверяет наличие у узла атрибутов. | 
| hasChildNodes | DOM 1 | Проверяет наличие у узла детей. | 
| insertBefore | DOM 1 | Вставляет новый узел перед заданным сыном. | 
| isSupported | DOM 2 | Проверяет свойство реализации DOM. | 
| normalize | DOM 1 | Нормализует текстовое содержимое узла. | 
| removeChild | DOM 1 | Удаляет заданного сына. | 
| replaceChild | DOM 1 | Заменяет заданного сына новым узлом. | 
Свойство attributes
Синтаксис: узел.attributes Изменяемое: нет
Поддержка:Для XML-документов соответствует стандарту; для HTML-документов частично (см. прим.).
Соответствует стандарту.
Свойство attributes возвращает объект типа NamedNodeMap, содержащий список всех атрибутов данного узла, если узел имеет тип Element, и null в противном случае.
Примечание. В Internet Explorer это свойство реализовано нестандартно:
- Список атрибутов элемента является статическим, а не живым, т. е. изменение атрибутов элемента не влечет его автоматического обновления.
 - Этот список не содержит атрибута style (для доступа к нему используется нестандартное свойство узел.style.cssText) и expando-атрибутов.
 
Следующий пример
<BODY bgcolor="yellow" text="green">
<SCRIPT>
var body = document.getElementsByTagName("BODY")[0];
var attrs = body.attributes;
for (var i = 0; i < attrs.length; i++) {
  if (attrs[i].nodeValue)
    document.write(attrs[i].nodeName, "=", attrs[i].nodeValue, " ");
}
</SCRIPT>
</BODY>
      
      выведет в Gecko текст: bgcolor=yellow text=green,
        а в Internet Explorer: contentEditable=inherit text=1140883456 bgColor=-1694433281.
Свойство childNodes
Синтаксис: узел.childNodes Изменяемое: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Свойство childNodes возвращает объект типа NodeList, содержащий список всех детей данного узла. Если узел не имеет детей, то возвращается список нулевой длины. Следующий пример
<BODY>
<SCRIPT>
var body = document.getElementsByTagName("BODY")[0];
var list = body.childNodes;
for (var i = 0; i < list.length; i++) {
    document.write(list[i].nodeName, " ");
}
</SCRIPT>
</BODY>
      
      выведет в Gecko текст: #text SCRIPT, а в Internet Explorer: SCRIPT #text. Как мы видим, порядок элементов в списке может быть любым; гарантируется только, что в нем присутствуют все дети данного узла.
Свойство firstChild
Синтаксис: узел.firstChild Изменяемое: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Свойство firstChild возвращает указатель на первый узел, являющийся сыном
        данного узла. Если узел не имеет детей, то возвращается null. Это свойство
        эквивалентно выражению узел.childNodes[0].
Свойство lastChild
Синтаксис: узел.lastChild Изменяемое: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Свойство lastChild возвращает указатель на последний узел, являющийся сыном
        данного узла. Если узел не имеет детей, то возвращается null. Это свойство
        эквивалентно выражению узел.childNodes[узел.childNodes.length-1].
Свойство localName
Синтаксис: узел.localName Изменяемое: нет
Поддержка:Не поддерживается.
Не поддерживается.
Свойство localName возвращает строку, содержащую локальную часть ограниченного имени узла. Оно имеет смысл только для узлов типа Element и Attr, созданных соответственно методами CreateElementNS и CreateAttributeNS. В остальных случаях возвращается null.
Свойство namespaceURI
Синтаксис: узел.namespaceURI Изменяемое: нет
Поддержка:Только для XML-документов.
Не поддерживается.
Свойство namespaceURI возвращает строку, содержащую URI пространства имен данного узла. Оно имеет смысл только для узлов типа Element и Attr, созданных соответственно методами CreateElementNS и CreateAttributeNS. В остальных случаях возвращается null.
Свойство nextSibling
Синтаксис: узел.nextSibling Изменяемое: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Свойство nextSibling возвращает указатель на узел, непосредственно следующий в документе за данным узлом. Если такого узла нет, то возвращается null.
Свойство nodeName
Синтаксис: узел.nodeName Изменяемое: нет
Поддержка:Для XML-документов соответствует стандарту; для HTML-документов частично (см. прим. к Таблице 4.4).
Соответствует стандарту.
Свойство nodeName возвращает строку, содержащую имя данного узла согласно
        Таблицы 4.4. Пример: оператор alert(document.nodeName) выведет
        в Gecko строку #document (в Internet Explorer имя узла Document не определено).
Свойство nodeType
Синтаксис: узел.nodeType Изменяемое: нет
Поддержка:Для XML-документов соответствует стандарту; для HTML-документов частично (см. прим.).
Соответствует стандарту.
Свойство nodeType возвращает тип данного узла согласно Таблицы 4.3.
Примечание. В Internet Explorer это свойство реализовано для узлов Element и Text. Для остальных типов узлов оно не определено.
Пример: оператор alert(document.nodeName) выведет в Gecko строку 9.
Свойство nodeValue
Синтаксис: узел.nodeValue Изменяемое: да Исключения: NO_MODIFICATION_ALLOWED_ERR (при записи), DOMSTRING_SIZE_ERR (при чтении)
Поддержка:Cоответствует стандарту.
Соответствует стандарту.
Свойство nodeValue обеспечивает доступ к значению данного узла. Значение узла зависит от его типа (см. Таблицу 4.4). Если значением узла может быть только null, то попытка изменить его значение игнорируется. Пример:
var text = document.createTextNode("");
text.nodeValue = "Пример абзаца.";
var elem = document.createElement("P");
elem.appendChild(text);
document.body.appendChild(elem);
      
      Свойство ownerDocument
Синтаксис: узел.ownerDocument Изменяемое: нет
Поддержка:Только для XML-документов.
Соответствует стандарту.
Свойство ownerDocument возвращает указатель на объект Document, к которому принадлежит данный узел. Для узлов типа Document и DocumentType, которые еще не связаны с конкретным документом, возвращается null. Пример:
var elem = document.createElement("P");
document.body.appendChild(elem);
alert(elem.ownerDocument.documentElement.nodeName);
      
      Свойство parentNode
Синтаксис: узел.parentNode Изменяемое: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Свойство parentNode возвращает указатель на узел, являющийся отцом данного узла. Если узел не имеет отца, то возвращается null.
Свойство prefix
Синтаксис: узел.prefix Изменяемое: да Исключения: INVALID_CHARACTER_ERR, NO_MODIFICATION_ALLOWED_ERR, NAMESPACE_ERR
Поддержка:Только для XML-документов; неизменяемое.
Не поддерживается.
Свойство prefix возвращает строку, содержащую префикс пространства имен данного узла. Оно имеет смысл только для узлов типа Element и Attr, созданных соответственно методами CreateElementNS и CreateAttributeNS. В остальных случаях возвращается null.
При записи этого свойства автоматически изменяются свойство узла nodeName, содержащее ограниченное имя узла, а также свойства tagName (если это Element) и name (если это Attr).
Свойство previousSibling
Синтаксис: узел.previousSibling Изменяемое: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Свойство previousSibling возвращает указатель на узел, непосредственно предшествующий в документе данному узлу. Если такого узла нет, то возвращается null.
Метод appendChild
Синтаксис: узел.appendChild(newChild) Аргументы: newChild  выражение типа Node Результат: узел Node Исключения: HIERARCHY_REQUEST_ERR, WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод appendChild добавляет узел newChild в конец списка детей данного узла и возвращает его в качестве результата. Если узел newChild уже был в списке, то он сначала удаляется, а затем добавляется. Пример: сценарий
var elem = document.createElement("IMG");
document.body.appendChild(elem);
alert(document.body.lastChild.tagName);
      
      выведет на экран текст IMG.
Метод cloneNode
Синтаксис: узел.cloneNode(deep) Аргументы: deep  логическое выражение Результат: новый узел Node Исключения: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод cloneNode создает копию данного узла и возвращает ее. Если аргумент deep равен true, то создается копия поддерева документа, начиная с данного узла; если он равен false, то копируется только сам узел (и его атрибуты, если это Element).
Метод hasAttributes
Синтаксис: узел.hasAttributes() Результат: логическое значение Исключения: нет
Поддержка:Не поддерживается.
Соответствует стандарту.
Метод hasAttributes возвращает true, если узел является элементом
        и имеет хотя бы один атрибут. В остальных случаях возвращается false. Вызов
        этого метода эквивалентен выражению (узел.attributes.length != 0).
Метод hasChildNodes
Синтаксис: узел.hasChildNodes() Результат: логическое значение Исключения: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод hasChildNodes возвращает true, если узел имеет хотя
        бы одного ребенка; в противном случае возвращается false. Вызов этого метода
        эквивалентен выражению (узел.childNodes.length != 0).
Метод insertBefore
Синтаксис: узел.insertBefore(newChild, refChild) Аргументы: newChild, refChild  выражения типа Node Результат: узел Node Исключения: HIERARCHY_REQUEST_ERR, WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR, NOT_FOUND_ERR
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод insertBefore вставляет узел newChild в список детей данного узла перед узлом refChild и возвращает его в качестве результата. Если узел newChild уже был в списке, то он сначала удаляется, а затем добавляется. Пример: сценарий
var elem = document.createElement("IMG");
document.body.insertBefore(elem, document.body.firstChild);
alert(document.body.firstChild.tagName);
      
      выведет на экран текст IMG.
Метод isSupported
Синтаксис: объект.isSupported(feature, version) Аргументы: feature, version  выражения типа DOMString Результат: логическое значение Исключения: нет
Поддержка:Не поддерживается.
Соответствует стандарту.
Метод isSupported возвращает true, если реализация DOM поддерживает указанное свойство, и false в противном случае. Имя свойства (в любом регистре) задается аргументом feature; оно должно соответствовать правилам образования имен XML. Аргумент version задает имя версии проверяемого свойства. Если он не задан, то возвращается true, если поддерживается хотя бы какая-то версия данного свойства. Ср. метод DOMImplementation.hasFeature.
В Gecko значениями feature могут быть строки "XML" и "HTML", а значением version  строки "1.0" и "2.0". Пример:
alert(document.body.isSupported("HTML", "1.0"));
alert(document.body.isSupported("HTML", "2.0"));
alert(document.body.isSupported("HTML", "3.0"));
      
      Первые два оператора alert выведут строку true, а третий false.
Метод normalize
Синтаксис: узел.normalize() Исключения: нет
Поддержка:Только для XML-документов.
Соответствует стандарту.
Метод normalize нормализует текстовое содержимое данного узла. Нормализация состоит в том, что пустые текстовые узлы удаляются, а соседние текстовые узлы сливаются в один. В результате остаются только текстовые узлы, разделенные какими-либо символами разметки (тегами, комментариями, директивами, секциями CDATA или ссылками на разделы). Нормализованная форма элементов дерева обеспечивает неизменность его структуры при сохранении и перезагрузке. Следующий пример нормализует все абзацы документа.
var pars = document.getElementsByTagName("P");
for (var i = 0; i < pars.length; i++)
  pars[i].normalize();
      
      Метод removeChild
Синтаксис: узел.removeChild(oldChild) Аргументы: oldChild  выражение типа Node Результат: узел Node Исключения: NO_MODIFICATION_ALLOWED_ERR, NOT_FOUND_ERR
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод removeChild удаляет узел oldChild из списка детей данного узла и возвращает его в качестве результата. Пример:
document.body.removeChild(document.body.firstChild);
Метод replaceChild
Синтаксис: узел.replaceChild(newChild, oldChild) Аргументы: newChild, oldChild  выражения типа Node Результат: узел Node Исключения: HIERARCHY_REQUEST_ERR, WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR, NOT_FOUND_ERR
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод replaceChild заменяет узел oldChild в списке детей данного узла на узел newChild и возвращает oldChild в качестве результата. Если newChild уже был в списке детей, то он удаляется из него до замены. Пример:
var elem = document.createElement("P");
document.body.replaceChild(elem, document.body.firstChild);
      
      4.3.2. Упорядоченный список узлов: интерфейс NodeList
Поддержка:Для XML-документов соответствует стандарту (XMLDOMNodeList); для HTML-документов поддерживается в виде коллекций.
Соответствует стандарту.
Интерфейс NodeList реализует упорядоченные списки узлов, которые возвращаются многими свойствами и методами DOM. Списки узлов в DOM являются живыми, т. е. любое изменение документа влечет автоматическое изменение всех связанных с ним списков.
Этот интерфейс имеет единственное свойство length, возвращающее количество узлов в списке, и единственный метод item, возвращающий элемент списка с заданным номером (элементы списка узлов нумеруются, начиная с нуля).
Свойство length
Синтаксис: список.length Изменяемое: нет
Поддержка:Cоответствует стандарту.
Соответствует стандарту.
Свойство length возвращает количество элементов в данном списке. Допустимые индексы элементов списка лежат в диапазоне от 0 до length-1 включительно. Следующий пример выводит на экран количество элементов в дереве документа:
alert(document.getElementsByTagName("*").length); // в Gecko (стандарт)
alert(document.all.length);                       // в Internet Explorer
      
      Метод item
Синтаксис: список.item(index) Аргументы: index  числовое выражение Результат: узел Node или null Исключения: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод item возвращает элемент списка узлов с заданным индексом в качестве результата. Если индекс выходит за пределы диапазона элементов списка, то возвращается null. Пример: оператор
alert(document.childNodes.item(0).nodeName);
выведет на экран текст HTML.
JavaScript позволяет нам записать обращение к элементу списка более компактно. Предыдущий оператор может выглядеть так:
alert(document.childNodes[0].nodeName);
Internet Explorer поддерживает еще одну форму обращения к элементу списка, а именно:
alert(document.childNodes(0).nodeName);
Однако, эта форма является нестандартной, и ей лучше не пользоваться.
4.3.3. Неупорядоченный список узлов: интерфейс NamedNodeMap
Поддержка:Для XML-документов соответствует стандарту (XMLDOMNamedNodeMap); для HTML-документов поддерживается в виде коллекций.
Соответствует стандарту.
Интерфейс NamedNodeMap реализует неупорядоченные списки узлов, доступ к которым осуществляется по имени узла. Эти списки также являются живыми, т. е. любое изменение документа влечет автоматическое изменение всех связанных с ним списков.
DOM допускает возможность доступа к элементам списка NamedNodeMap по их номеру в списке, но подчеркивает, что эта возможность не означает упорядоченности списка по какому-либо признаку.
Этот интерфейс имеет единственное свойство length, возвращающее количество узлов в списке, и несколько методов, обеспечивающих доступ к элементам списка:
| Свойство | Модель | Описание | 
|---|---|---|
| getNamedItem | DOM 1 | Возвращает узел с заданным именем. | 
| getNamedItemNS | DOM 2 | Возвращает узел с заданным именем с учетом пространства имен. | 
| item | DOM 1 | Возвращает узел с заданным номером. | 
| removeNamedItem | DOM 1 | Удаляет узел с заданным именем. | 
| removeNamedItemNS | DOM 2 | Удаляет узел с заданным именем с учетом пространства имен. | 
| setNamedItem | DOM 1 | Добавляет узел в список. | 
| setNamedItemNS | DOM 2 | Добавляет узел в список с учетом пространства имен. | 
Свойство length
Синтаксис: список.length Изменяемое: нет
Поддержка:Cоответствует стандарту.
Соответствует стандарту.
Свойство length возвращает количество элементов в данном списке. Допустимые индексы элементов списка лежат в диапазоне от 0 до length-1 включительно. Следующий пример выводит на экран количество атрибутов элемента BODY:
alert(document.body.attributes.length);
Метод getNamedItem
Синтаксис: список.getNamedItem(name) Аргументы: name  выражение типа DOMString Результат: узел Node или null Исключения: нет
Поддержка:Только для XML-документов.
Соответствует стандарту.
Метод getNamedItem возвращает элемент списка узлов с заданным именем name в качестве результата. Если узла с таким именем в списке нет, то возвращается null. Пример:
alert(document.body.attributes.getNamedItem("text").nodeValue);
      
      В Internet Explorer этот пример должен быть записан любым из двух следующих способов:
alert(document.body.attributes["text"].nodeValue);
alert(document.body.attributes("text").nodeValue);
      
      Метод getNamedItemNS
Синтаксис: список.getNamedItemNS(namespaceURI, localName) Аргументы: namespaceURI, localName  выражения типа DOMString Результат: узел Node или null Исключения: нет
Поддержка:Нестандартная поддержка для XML-документов (см. прим.).
Не поддерживается.
Метод getNamedItemNS возвращает элемент списка узлов с заданным именем в качестве результата. Если узла с таким именем в списке нет, то возвращается null. Этот метод предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а localName  локальное имя узла.
Примечание. В Microsoft XML DOM этот метод имеет вид getQualifiedItem(localName, namespaceURI).
Метод item
Синтаксис: список.item(index) Аргументы: index  числовое выражение Результат: узел Node или null Исключения: нет
Поддержка:Соответствует стандарту.
Соответствует стандарту.
Метод item возвращает элемент списка узлов с заданным индексом в качестве результата. Если индекс выходит за пределы диапазона элементов списка, то возвращается null. Пример:
alert(document.body.attributes.item(0).nodeName);
JavaScript позволяет нам записать обращение к элементу списка более компактно. Предыдущий оператор может выглядеть так:
alert(document.attributes[0].nodeName);
Internet Explorer поддерживает еще одну форму обращения к элементу списка, а именно:
alert(document.attributes(0).nodeName);
Однако, эта форма является нестандартной, и ей лучше не пользоваться.
Метод removeNamedItem
Синтаксис: список.removeNamedItem(name) Аргументы: name  выражение типа DOMString Результат: узел Node Исключения: NOT_FOUND_ERR, NO_MODIFICATION_ALLOWED_ERR
Поддержка:Только для XML-документов.
Соответствует стандарту.
Метод removeNamedItem удаляет элемент списка узлов с заданным именем name и возвращает его в качестве результата. Если удаляемый узел является атрибутом элемента, имеющим значение по умолчанию, то сразу после его удаления он вновь появляется в списке со значением по умолчанию. Пример:
document.body.attributes.removeNamedItem("text");
      
      Метод removeNamedItemNS
Синтаксис: список.removeNamedItemNS(namespaceURI, localName) Аргументы: namespaceURI, localName  выражения типа DOMString Результат: узел Node Исключения: NOT_FOUND_ERR, NO_MODIFICATION_ALLOWED_ERR
Поддержка:Нестандартная поддержка для XML-документов (см. прим.).
Не поддерживается.
Метод removeNamedItemNS удаляет элемент списка узлов с заданным именем и возвращает его в качестве результата. Если удаляемый узел является атрибутом элемента, имеющим значение по умолчанию, то сразу после его удаления он вновь появляется в списке со значением по умолчанию. Этот метод предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а localName  локальное имя узла.
Примечание. В Microsoft XML DOM этот метод имеет вид removeQualifiedItem(localName, namespaceURI).
Метод setNamedItem
Синтаксис: список.setNamedItem(arg) Аргументы: arg  выражение типа Node Результат: узел Node или null Исключения: WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR, INUSE_ATTRIBURE_ERR
Поддержка:Только для XML-документов.
Соответствует стандарту.
Метод setNamedItem добавляет элемент arg в данный список узлов. Если узел с таким именем в списке есть, то он заменяется на arg и возвращается в качестве результата. Если узла с таким именем в списке нет, то arg вставляется в список и возвращается null. Пример:
var attr = document.createAttribute("text");
attr.nodeValue = "red";
document.body.attributes.setNamedItem(attr);
      
      Метод setNamedItemNS
Синтаксис: список.setNamedItemNS(arg) Аргументы: arg  выражение типа Node Результат: узел Node или null Исключения: WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR, INUSE_ATTRIBURE_ERR
Поддержка:Не поддерживается.
Не поддерживается.
Метод setNamedItemNS добавляет элемент arg в данный список узлов. Если узел с таким именем в списке есть, то он заменяется на arg и возвращается в качестве результата. Если узла с таким именем в списке нет, то arg вставляется в список и возвращается null. Этот метод предназначен для XML-документов и для HTML-документов может не поддерживаться. Он отличается от метода setNamedItem тем, что при вставке узла используются URI его пространства имен, и его локальное имя.
 Поддерживается для XML-документов (XMLDOMNode);
              для HTML-документов поддерживается частично.
           
 DOM 1 полностью, DOM 2 частично.