diff options
-rw-r--r-- | src/HTML5/Serializer/Traverser.php | 7 | ||||
-rw-r--r-- | test/HTML5/Serializer/TraverserTest.php | 14 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/HTML5/Serializer/Traverser.php b/src/HTML5/Serializer/Traverser.php index ae3c10f..174528e 100644 --- a/src/HTML5/Serializer/Traverser.php +++ b/src/HTML5/Serializer/Traverser.php @@ -100,6 +100,13 @@ class Traverser { case XML_COMMENT_NODE: $this->rules->comment($node); break; + case XML_DOCUMENT_FRAG_NODE: + // Document fragments are a special case. Only the children need to + // be serialized. + if ($node->hasChildNodes()) { + $this->children($node->childNodes); + } + break; // Currently we don't support embedding DTDs. default: print '<!-- Skipped -->'; diff --git a/test/HTML5/Serializer/TraverserTest.php b/test/HTML5/Serializer/TraverserTest.php index e160ce6..faeb0e3 100644 --- a/test/HTML5/Serializer/TraverserTest.php +++ b/test/HTML5/Serializer/TraverserTest.php @@ -56,4 +56,18 @@ class TraverserTest extends \HTML5\Tests\TestCase { $this->assertInstanceOf('\HTML5\Serializer\Traverser', $t); } + + // function testFragment() { + // $html = '<span class="bar">foo</span>'; + // $input = new \HTML5\Parser\StringInputStream($html); + // $dom = \HTML5::parseFragment($input); + + // $this->assertInstanceOf('\DOMDocumentFragment', $dom); + + // $stream = fopen('php://temp', 'w'); + // $t = new Traverser($dom, $stream, \HTML5::options()); + + // $out = $t->walk(); + // $this->assertEquals($html, stream_get_contents($stream, -1, 0)); + // } }
\ No newline at end of file |