File: import_of_namepace_conflicting_attributes.phpt

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (53 lines) | stat: -rw-r--r-- 1,770 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--TEST--
Import of namespace-conflicting attributes
--EXTENSIONS--
dom
--FILE--
<?php

$dom = Dom\XMLDocument::createEmpty();
$root = $dom->appendChild($dom->createElement('root'));

$root->setAttributeNS("urn:a", "a:root1", "bar");
$root1 = $root->getAttributeNodeNS("urn:a", "root1");
$root->setAttributeNS("urn:b", "a:root2", "bar");
$root2 = $root->getAttributeNodeNS("urn:b", "root2");

$child = $root->appendChild($dom->createElement("child"));
$child->setAttributeNS("urn:x", "a:child1", "bar");
$child1 = $child->getAttributeNodeNS("urn:x", "child1");

echo $dom->saveXml(), "\n";

var_dump($root1->prefix, $root1->namespaceURI);
var_dump($root2->prefix, $root2->namespaceURI);

$child->removeAttribute("a:child1");
$root->setAttributeNodeNS($child1);

$importer = Dom\XMLDocument::createEmpty();
$imported = $importer->importNode($root, true);
echo $importer->saveXml($imported), "\n";

var_dump($imported->getAttributeNodeNS("urn:a", "root1")->prefix);
var_dump($imported->getAttributeNodeNS("urn:a", "root1")->namespaceURI);
var_dump($imported->getAttributeNodeNS("urn:b", "root2")->prefix);
var_dump($imported->getAttributeNodeNS("urn:b", "root2")->namespaceURI);
var_dump($imported->getAttributeNodeNS("urn:x", "child1")->prefix);
var_dump($imported->getAttributeNodeNS("urn:x", "child1")->namespaceURI);

?>
--EXPECT--
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:a="urn:a" a:root1="bar" xmlns:ns1="urn:b" ns1:root2="bar"><child xmlns:a="urn:x" a:child1="bar"/></root>
string(1) "a"
string(5) "urn:a"
string(1) "a"
string(5) "urn:b"
<root xmlns:a="urn:a" a:root1="bar" xmlns:ns1="urn:b" ns1:root2="bar" xmlns:ns2="urn:x" ns2:child1="bar"><child/></root>
string(1) "a"
string(5) "urn:a"
string(1) "a"
string(5) "urn:b"
string(1) "a"
string(5) "urn:x"