<html>
<head>
<script>
function debug(str) {
	li = document.createElement('li');
	li.appendChild(document.createTextNode(str));
	document.getElementById('console').appendChild(li);
}

function parseDocument() {
	str = '<test><child1>First child</child1>';
	str += '<child2 attr="an attribute">Second child</child2>';
	str += '<!-- A comment --></test>';
	
	parser = new DOMParser();
	doc = parser.parseFromString(str, 'text/xml');
	
	
	return doc;
}

function runTests() {
	if (window.testRunner) {
    	testRunner.dumpAsText();
	}

	doc = parseDocument();
	
	child1 = doc.documentElement.firstChild;
	child2 = child1.nextSibling
	comment = child2.nextSibling;
	
	fragment = doc.createDocumentFragment();
	fragment.appendChild(doc.documentElement.cloneNode(true))
	
	serializer = new XMLSerializer();
	
	debug(serializer.serializeToString(child1));
	debug(serializer.serializeToString(child2));
	debug(serializer.serializeToString(comment));	
	debug(serializer.serializeToString(doc));
	debug(serializer.serializeToString(fragment));
	
}

</script>
</head>
<body onload="runTests()">
This tests XMLSerializer on different node types. If the test is successful, there should be five lines of output. The first line should be the child1 tag. The second should be the child2 tag. The third one should be a comment, the fourth one should be the complete document and the fifth one should be the complete document but serialized from a document fragment node.
<ul id="console">
</ul>
</body>
</html>
