Как установить объявление пространства имен (xmlns) в корневом теге с помощью «чистой DOM»?

Ошибка «Неопределенное исключение« DOMException »с сообщением« Ошибка пространства имен »» в

 $dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('MyRoot','Hello');
$root->setAttributeNS('http://www.w3.org/1999/xlink','xmlns:xlink','xlink');
$dom->appendChild($root);
die($dom->saveXML());

Как установить xmlns объявление в корневом теге? производить

  <MyRoot xmlns:xlink="http://www.w3.org/1999/xlink"/>Hello</MyRoot>

1

Решение

Пространство имен xmlns: xlink — это не его значение, а стандартное пространство имен. Префикс xmlns используется для стандартного пространства имен http://www.w3.org/2000/xmlns/, Вам не нужно определять это пространство имен.

Все атрибуты пространства имен (кроме xmlns = «…») являются частью этого пространства имен.

$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('MyRoot','Hello');
$root->setAttributeNS(
'http://www.w3.org/2000/xmlns/','xmlns:xlink','http://www.w3.org/1999/xlink'
);
$dom->appendChild($root);

echo($dom->saveXML());

Выход:

<?xml version="1.0" encoding="utf-8"?>
<MyRoot xmlns:xlink="http://www.w3.org/1999/xlink">Hello</MyRoot>
2

Другие решения

Установите пространство имен XMLNS, а затем имя атрибута xmlns:xlink, а затем значение атрибута, который вы хотите установить … который является URL-адресом xlink.

$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('MyRoot','Hello');
$root->setAttributeNS('http://www.w3.org/2000/xmlns/','xmlns:xlink','http://www.w3.org/1999/xlink');
$dom->appendChild($root);
die($dom->saveXML());

<?xml version="1.0" encoding="utf-8"?>
<MyRoot xmlns:xlink="http://www.w3.org/1999/xlink">Hello</MyRoot>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector