<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>

<script>
    doc = (new DOMParser).parseFromString(
        '<?xml version="1.0" encoding="ISO-8859-1"?>' +
        '<!DOCTYPE doc []>' +
        '<?xml-stylesheet "Data"  ?>' +
        '<!' + '-- comment -->' +
        '<doc attr="&lt;&amp;nbsp;>">0  <elem>1</elem><!' + '--  comment  -->a<![CDATA[-cdata-]]>b<elem>2</elem><empty></empty></doc>',
        'application/xml');

    PI = doc.firstChild;
    while (PI.nodeType != Node.PROCESSING_INSTRUCTION_NODE)
        PI = PI.nextSibling;

    COMMENT = doc.firstChild;
    while (COMMENT.nodeType != Node.COMMENT_NODE)
        COMMENT = COMMENT.nextSibling;

    ATTR = doc.documentElement.getAttributeNode("attr");

    CDATA = doc.documentElement.firstChild;
    while (CDATA.nodeType != Node.CDATA_SECTION_NODE)
        CDATA = CDATA.nextSibling;

    TEXT = doc.documentElement.firstChild;
    
    EMPTY = doc.documentElement.lastChild;

    shouldBe("doc.evaluate('.', doc, null, XPathResult.STRING_TYPE, null).stringValue", "'0  1a-cdata-b2'");
    shouldBe("doc.evaluate('.', doc.documentElement, null, XPathResult.STRING_TYPE, null).stringValue", "'0  1a-cdata-b2'");
    shouldBe("doc.evaluate('.', PI, null, XPathResult.STRING_TYPE, null).stringValue", "'\"Data\"  '");
    shouldBe("doc.evaluate('.', COMMENT, null, XPathResult.STRING_TYPE, null).stringValue", "' comment '");
    shouldBe("doc.evaluate('.', CDATA, null, XPathResult.STRING_TYPE, null).stringValue", "'-cdata-'");
    shouldBe("doc.evaluate('.', TEXT, null, XPathResult.STRING_TYPE, null).stringValue", "'0  '");
    shouldBe("doc.evaluate('.', EMPTY, null, XPathResult.STRING_TYPE, null).stringValue", "''");
    shouldBe("doc.evaluate('.', ATTR, null, XPathResult.STRING_TYPE, null).stringValue", "'<&nbsp;>'");

</script>
</body>
</html>
