Declarations should occur before anything else
diff --git a/xmltest.cpp b/xmltest.cpp
index f474951..141694d 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -1570,22 +1570,31 @@
 	}

 

 	{

-		// Check that declarations are parsed only as the FirstChild

+		// Check that declarations are allowed only at beginning of document

 	    const char* xml0 = "<?xml version=\"1.0\" ?>"

 	                       "   <!-- xml version=\"1.1\" -->"

 	                       "<first />";

 	    const char* xml1 = "<?xml version=\"1.0\" ?>"

-	                       "   <?xml version=\"1.1\" ?>"

+	                       "<?xml-stylesheet type=\"text/xsl\" href=\"Anything.xsl\"?>"

 	                       "<first />";

 	    const char* xml2 = "<first />"

 	                       "<?xml version=\"1.0\" ?>";

+	    const char* xml3 = "<first></first>"

+	                       "<?xml version=\"1.0\" ?>";

+

+	    const char* xml4 = "<first><?xml version=\"1.0\" ?></first>";

+

 	    XMLDocument doc;

 	    doc.Parse(xml0);

 	    XMLTest("Test that the code changes do not affect normal parsing", doc.Error(), false);

 	    doc.Parse(xml1);

-	    XMLTest("Test that the second declaration throws an error", doc.ErrorID(), XML_ERROR_PARSING_DECLARATION);

+	    XMLTest("Test that the second declaration is allowed", doc.Error(), false);

 	    doc.Parse(xml2);

-	    XMLTest("Test that declaration after a child throws an error", doc.ErrorID(), XML_ERROR_PARSING_DECLARATION);

+	    XMLTest("Test that declaration after a child is not allowed", doc.ErrorID(), XML_ERROR_PARSING_DECLARATION);

+	    doc.Parse(xml3);

+	    XMLTest("Test that declaration after a child is not allowed", doc.ErrorID(), XML_ERROR_PARSING_DECLARATION);

+	    doc.Parse(xml4);

+	    XMLTest("Test that declaration inside a child is not allowed", doc.ErrorID(), XML_ERROR_PARSING_DECLARATION);

 	}

 

     {