diff --git a/lib/DOM/Document.php b/lib/DOM/Document.php index a5dec08..b13bb3e 100644 --- a/lib/DOM/Document.php +++ b/lib/DOM/Document.php @@ -100,7 +100,7 @@ class Document extends \DOMDocument { $namespaceURI = trim($namespaceURI); $namespaceURI = ($namespaceURI === Parser::HTML_NAMESPACE) ? null : $namespaceURI; } - $qualifiedName = trim($qualifiedName); + $qualifiedName = ($namespaceURI === null) ? strtolower(trim($qualifiedName)) : trim($qualifiedName); try { if ($qualifiedName !== 'template' || $namespaceURI !== null) { diff --git a/tests/cases/TestDOM.php b/tests/cases/TestDOM.php index bab5496..cfdad31 100644 --- a/tests/cases/TestDOM.php +++ b/tests/cases/TestDOM.php @@ -18,24 +18,30 @@ use MensBeam\HTML\Document; */ class TestDOM extends \PHPUnit\Framework\TestCase { /** @dataProvider provideNamespacedElements */ - public function testCreateNamespacedElements(?string $ns, string $name, string $local, string $prefix): void { + public function testCreateNamespacedElements(?string $nsIn, string $nameIn, ?string $nsOut, string $local, string $prefix): void { $d = new Document; - $e = $d->createElementNS($ns, $name); - $this->assertSame($ns, $e->namespaceURI); + $e = $d->createElementNS($nsIn, $nameIn); + $this->assertSame($nsOut, $e->namespaceURI); $this->assertSame($local, $e->localName); $this->assertSame($prefix, $e->prefix); } public function provideNamespacedElements(): iterable { return [ - [null, "test", "test", ""], - [null, "test:test", "testU00003Atest", ""], - ["http://www.w3.org/2000/svg", "svg", "svg", ""], - ["http://www.w3.org/2000/svg", "svg:svg", "svg", "svg"], - ["fake_ns", "test:test", "test", "test"], - ["fake_ns", "test:test:test", "testU00003Atest", "test"], - ["fake_ns", "te st:test", "test", "teU000020st"], - [null, "9", "U000039", ""], + [null, "test", null, "test", ""], + [null, "test:test", null, "testU00003Atest", ""], + ["http://www.w3.org/2000/svg", "svg", "http://www.w3.org/2000/svg", "svg", ""], + ["http://www.w3.org/2000/svg", "svg:svg", "http://www.w3.org/2000/svg", "svg", "svg"], + ["fake_ns", "test:test", "fake_ns", "test", "test"], + ["fake_ns", "test:test:test", "fake_ns", "testU00003Atest", "test"], + ["fake_ns", "te st:test", "fake_ns", "test", "teU000020st"], + [null, "9", null, "U000039", ""], + ["http://www.w3.org/1999/xhtml", "test", null, "test", ""], + ["http://www.w3.org/1999/xhtml", "TEST", null, "test", ""], + [null, "TEST", null, "test", ""], + ["fake_ns", "TEST", "fake_ns", "TEST", ""], + ["http://www.w3.org/2000/svg", "TEST", "http://www.w3.org/2000/svg", "TEST", ""], + ["http://www.w3.org/1998/Math/MathML", "TEST", "http://www.w3.org/1998/Math/MathML", "TEST", ""], ]; } }