File: attribute_renaming_conflict.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 (75 lines) | stat: -rw-r--r-- 2,133 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
--TEST--
Renaming an attribute node to a name that already exists
--EXTENSIONS--
dom
--FILE--
<?php

$dom = DOM\XMLDocument::createFromString(<<<XML
<!DOCTYPE root [
    <!ELEMENT implied-attribute ANY>
    <!ATTLIST implied-attribute hello CDATA #FIXED "world">
]>
<root a="b" c="d" xmlns:ns1="urn:a" ns1:foo="bar">
    <implied-attribute my-attr="x"/>
    <implied-attribute my-attr="x"/>
</root>
XML, LIBXML_DTDATTR);

$root = $dom->documentElement;
try {
    $root->attributes[0]->rename(NULL, 'c');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}
try {
    $root->attributes[0]->rename(NULL, 'c');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}
try {
    $root->attributes[1]->rename(NULL, 'a');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}
try {
    $root->attributes[1]->rename('urn:a', 'foo');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}
try {
    $root->attributes[3]->rename('', 'a');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}
try {
    $root->firstElementChild->attributes[0]->rename(NULL, 'hello');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}
try {
    $root->firstElementChild->attributes[1]->rename(NULL, 'my-attr');
} catch (DOMException $e) {
    echo $e->getMessage(), "\n";
}

// This is here to validate that nothing actually changed
echo $dom->saveXML();

?>
--EXPECT--
An attribute with the given name in the given namespace already exists
An attribute with the given name in the given namespace already exists
An attribute with the given name in the given namespace already exists
An attribute with the given name in the given namespace already exists
An attribute with the given name in the given namespace already exists
An attribute with the given name in the given namespace already exists
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ELEMENT implied-attribute ANY>
<!ATTLIST implied-attribute hello CDATA #FIXED "world">
]>
<root xmlns:ns1="urn:a" a="b" c="d" ns1:foo="bar">
    <implied-attribute my-attr="x" hello="world"/>
    <implied-attribute my-attr="x" hello="world"/>
</root>