DOMDocument::createAttributeNS
(PHP 5, PHP 7)
DOMDocument::createAttributeNS — Создает новый узел-атрибут с соответствующим ему пространством имен
Описание
Эта функция создает новый объект класса DOMAttr. Этот узел не будет отображаться в документе до тех пор, пока он не будет вставлен, например, функцией DOMNode::appendChild().
Список параметров
-
namespaceURI
-
URI пространства имен.
-
qualifiedName
-
Имя и префикс атрибута в виде prefix:tagname.
Возвращаемые значения
Новый экземпляр класса DOMAttr либо FALSE
в
случае ошибки.
Ошибки
-
DOM_INVALID_CHARACTER_ERR
-
Возникает, если
qualifiedName
содержит недопустимые символы. -
DOM_NAMESPACE_ERR
-
Возникает, если
qualifiedName
неправильно сформировано, либо еслиqualifiedName
имеет префикс, аnamespaceURI
имеет значениеNULL
.
Смотрите также
- DOMNode::appendChild() - Добавляет новый дочерний узел в конец списка потомков
- DOMDocument::createAttribute() - Создает новый атрибут
- DOMDocument::createCDATASection() - Создает новый cdata узел
- DOMDocument::createComment() - Создает новый узел-комментарий
- DOMDocument::createDocumentFragment() - Создание фрагмента документа
- DOMDocument::createElement() - Создает новый узел-элемент
- DOMDocument::createElementNS() - Создание нового узла-элемента с соответствующим пространством имен
- DOMDocument::createEntityReference() - Создание нового узла-ссылки на сущность
- DOMDocument::createProcessingInstruction() - Создает новый PI-узел
- DOMDocument::createTextNode() - Создает новый текстовый узел
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Обработка XML
- Document Object Model
- Функция DOMDocument::__construct() - Создание нового DOMDocument объекта
- Функция DOMDocument::createAttribute() - Создает новый атрибут
- Функция DOMDocument::createAttributeNS() - Создает новый узел-атрибут с соответствующим ему пространством имен
- Функция DOMDocument::createCDATASection() - Создает новый cdata узел
- Функция DOMDocument::createComment() - Создает новый узел-комментарий
- Функция DOMDocument::createDocumentFragment() - Создание фрагмента докуента
- Функция DOMDocument::createElement() - Создает новый узел-элемент
- Функция DOMDocument::createElementNS() - Создание нового узла-элемента с соответствующим пространством имен
- Функция DOMDocument::createEntityReference() - Создание нового узла-ссылки на сущность
- Функция DOMDocument::createProcessingInstruction() - Создает новый PI-узел
- Функция DOMDocument::createTextNode() - Создает новый текстовый узел
- Функция DOMDocument::getElementById() - Ищет элемент с заданным id
- Функция DOMDocument::getElementsByTagName() - Ищет все элементы с заданным локальным именем
- Функция DOMDocument::getElementsByTagNameNS() - Ищет элементы с заданным именем в определенном пространстве имен
- Функция DOMDocument::importNode() - Импорт узла в текущий документ
- Функция DOMDocument::load() - Загрузка XML из файла
- Функция DOMDocument::loadHTML() - Загрузка HTML из строки
- Функция DOMDocument::loadHTMLFile() - Загрузка HTML из файла
- Функция DOMDocument::loadXML() - Загрузка XML из строки
- Функция DOMDocument::normalizeDocument() - Нормализует документ
- Функция DOMDocument::registerNodeClass() - Регистрация расширенного класса, используемого для создания базового типа узлов
- Функция DOMDocument::relaxNGValidate() - Производит проверку документа на правильность построения посредством relaxNG
- Функция DOMDocument::relaxNGValidateSource() - Проверяет документ посредством relaxNG
- Функция DOMDocument::save() - Сохраняет XML дерево из внутреннего представления в файл
- DOMDocument::saveHTML
- DOMDocument::saveHTMLFile
- Функция DOMDocument::saveXML() - Сохраняет XML дерево из внутреннего представления в виде строки
- Функция DOMDocument::schemaValidate() - Проверяет действительности документа, основываясь на заданной схеме
- Функция DOMDocument::schemaValidateSource() - Проверяет действительность документа, основываясь на схеме
- Функция DOMDocument::validate() - Проверяет документ на соответствие его DTD
- Функция DOMDocument::xinclude() - Проводит вставку XInclude разделов в объектах DOMDocument
Коментарии
If a new namespace is introduced while creating and inserting an attribute, createAttributeNS() does not behave in the same way as createElementNS().
(1) Location: With createAttributeNS(), the new namespace is declared at the level of the document element. By contrast, createElementNS() declares the new namespace at the level of the affected element itself.
(2) Timing: With createAttributeNS(), the new namespace is declared in the document as soon as the attribute is created - the attribute does not actually have to be inserted. createElementNS() doesn't affect the document as long as the element is not inserted.
An example:
<?php
$source = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root><tag></tag></root>
XML;
/*
I. createAttributeNS:
* a new namespace shows up immediately, even without insertion of the attribute
* the new namespace is declared at the level of the document element
*/
$doc = new DOMDocument( '1.0' );
$doc->loadXML( $source );
// (1) We just create a "namespace'd" attribute without appending it to any element.
$attr_ns = $doc->createAttributeNS( '{namespace_uri_here}', 'example:attr' );
print $doc->saveXML() . "\n";
/*
Result: The namespace declaration appears, having been added to the document element. Output:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:example="{namespace_uri_here}"><tag/></root>
*/
// (2) Next, we give the attribute a value and insert it.
$attr_ns->value = 'value';
$doc->getElementsByTagName( 'tag' )->item(0)->appendChild( $attr_ns );
print $doc->saveXML() . "\n";
/*
Result: The "namespace'd" attribute shows up as well. Output:
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:example="{namespace_uri_here}"><tag example:attr="value"/></root>
*/
/*
II. createElementNS:
* a new namespace shows up only when the element is inserted
* the new namespace is declared at the level of the inserted element
*/
$doc = new DOMDocument( '1.0' );
$doc->loadXML( $source );
// (1) We create a "namespace'd" element without inserting it into the document.
$elem_ns = $doc->createElementNS( '{namespace_uri_here}', 'example:newtag' );
print $doc->saveXML() . "\n";
/*
Result: The document remains unchanged. Output:
<?xml version="1.0" encoding="UTF-8"?>
<root><tag/></root>
*/
// (2) Next, we insert the new element.
$doc->getElementsByTagName( 'tag' )->item(0)->appendChild( $elem_ns );
print $doc->saveXML() . "\n";
/*
Result: The namespace declaration appears, and it is embedded in the element using it. Output:
<?xml version="1.0" encoding="UTF-8"?>
<root><tag><example:newtag xmlns:example="{namespace_uri_here}"/></tag></root>
*/
?>