diff options
-rw-r--r-- | src/HTML5/Parser/DOMTreeBuilder.php | 4 | ||||
-rw-r--r-- | test/HTML5/Html5Test.php | 38 |
2 files changed, 38 insertions, 4 deletions
diff --git a/src/HTML5/Parser/DOMTreeBuilder.php b/src/HTML5/Parser/DOMTreeBuilder.php index 82ec520..5df4177 100644 --- a/src/HTML5/Parser/DOMTreeBuilder.php +++ b/src/HTML5/Parser/DOMTreeBuilder.php @@ -156,7 +156,7 @@ class DOMTreeBuilder implements EventHandler { case 'svg': $this->insertMode = self::IM_IN_SVG; break; - case 'mathml': + case 'math': $this->insertMode = self::IM_IN_MATHML; break; case 'noscript': @@ -180,7 +180,7 @@ class DOMTreeBuilder implements EventHandler { $aName = Elements::normalizeSvgAttribute($aName); } elseif ($this->insertMode == self::IM_IN_MATHML) { - $aName = Elements::normalizeMathMlAttribute($aname); + $aName = Elements::normalizeMathMlAttribute($aName); } $ele->setAttribute($aName, $aVal); diff --git a/test/HTML5/Html5Test.php b/test/HTML5/Html5Test.php index 88875a7..442fe63 100644 --- a/test/HTML5/Html5Test.php +++ b/test/HTML5/Html5Test.php @@ -98,7 +98,7 @@ class Html5Test extends TestCase { // Test a mixed case attribute. $list = $dom->getElementsByTagName('svg'); - $this->assertNotEmpty($list); + $this->assertNotEmpty($list->length); $svg = $list->item(0); $this->assertEquals("0 0 3 2", $svg->getAttribute('viewBox')); $this->assertFalse($svg->hasAttribute('viewbox')); @@ -106,7 +106,7 @@ class Html5Test extends TestCase { // Test a mixed case tag. // Note: getElementsByTagName is not case sensetitive. $list = $dom->getElementsByTagName('textPath'); - $this->assertNotEmpty($list); + $this->assertNotEmpty($list->length); $textPath = $list->item(0); $this->assertEquals('textPath', $textPath->tagName); $this->assertNotEquals('textpath', $textPath->tagName); @@ -117,4 +117,38 @@ class Html5Test extends TestCase { } + public function testMathMl() { + $dom = \HTML5::loadHTML('<!doctype html> + <html lang="en"> + <body> + <div id="foo" class="bar baz" definitionURL="http://example.com">foo bar baz</div> + <math> + <mi>x</mi> + <csymbol definitionURL="http://www.example.com/mathops/multiops.html#plusminus"> + <mo>±</mo> + </csymbol> + <mi>y</mi> + </math> + </body> + </html>'); + + $this->assertEmpty($dom->errors); + $list = $dom->getElementsByTagName('math'); + $this->assertNotEmpty($list->length); + + $list = $dom->getElementsByTagName('div'); + $this->assertNotEmpty($list->length); + $div = $list->item(0); + $this->assertEquals('http://example.com', $div->getAttribute('definitionurl')); + $this->assertFalse($div->hasAttribute('definitionURL')); + $list = $dom->getElementsByTagName('csymbol'); + $csymbol = $list->item(0); + $this->assertEquals('http://www.example.com/mathops/multiops.html#plusminus', $csymbol->getAttribute('definitionURL')); + $this->assertFalse($csymbol->hasAttribute('definitionurl')); + + $html = \HTML5::saveHTML($dom); + $this->assertRegExp('|<csymbol definitionURL="http://www.example.com/mathops/multiops.html#plusminus">|',$html); + $this->assertRegExp('|<mi>y</mi>|',$html); + } + } |