diff options
-rw-r--r-- | src/HTML5/Parser/DOMTreeBuilder.php | 5 | ||||
-rw-r--r-- | test/HTML5/Html5Test.php | 19 |
2 files changed, 22 insertions, 2 deletions
diff --git a/src/HTML5/Parser/DOMTreeBuilder.php b/src/HTML5/Parser/DOMTreeBuilder.php index ccad229..b26860d 100644 --- a/src/HTML5/Parser/DOMTreeBuilder.php +++ b/src/HTML5/Parser/DOMTreeBuilder.php @@ -274,7 +274,8 @@ class DOMTreeBuilder implements EventHandler // SPECIAL TAG HANDLING: // Spec says do this, and "don't ask." - if ($name == 'image') { + // find the spec where this is defined... looks problematic + if ($name == 'image' && !($this->insertMode === static::IM_IN_SVG || $this->insertMode === static::IM_IN_MATHML)) { $name = 'img'; } @@ -681,4 +682,4 @@ class DOMTreeBuilder implements EventHandler { return $this->current->tagName == $tagname; } -}
\ No newline at end of file +} diff --git a/test/HTML5/Html5Test.php b/test/HTML5/Html5Test.php index 78ac80f..77643c4 100644 --- a/test/HTML5/Html5Test.php +++ b/test/HTML5/Html5Test.php @@ -28,6 +28,25 @@ class Html5Test extends TestCase return $out; } + + public function testImageTagsInSvg() + { + $html = "<!DOCTYPE html> + <html> + <head> + <title>foo</title> + </head> + <body> + <svg> + <image height=\"10\" width=\"10\"></image> + </svg> + </body> + </html>"; + $doc = $this->html5->loadHTML($html); + $this->assertInstanceOf('DOMElement', $doc->getElementsByTagName('image')->item(0)); + $this->assertEmpty($this->html5->getErrors()); + } + public function testLoadOptions() { // doc |