data tree NEW opaque data node

Used for unknown anyxml/anydata nodes.
Some refactoring including making context
const for cases when only the dictionary
is modified or replacing unsigned int with
uint32_t.
diff --git a/tests/src/test_parser_xml.c b/tests/src/test_parser_xml.c
index b5c3f4c..247ff0a 100644
--- a/tests/src/test_parser_xml.c
+++ b/tests/src/test_parser_xml.c
@@ -12,6 +12,8 @@
  *     https://opensource.org/licenses/BSD-3-Clause
  */
 
+#include "tests/config.h"
+
 #include <stdarg.h>
 #include <stddef.h>
 #include <setjmp.h>
@@ -20,10 +22,9 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "tests/config.h"
-
 #include "../../src/context.h"
 #include "../../src/tree_data_internal.h"
+#include "../../src/printer_data.h"
 
 #define BUFSIZE 1024
 char logbuf[BUFSIZE] = {0};
@@ -161,19 +162,32 @@
 {
     *state = test_anydata;
 
-    const char *data = "<any xmlns=\"urn:tests:a\">"
-                         "<element1><x:element2 x:attr2=\"test\" xmlns:x=\"urn:x\">x:data</x:element2></element1><element1a/>"
-                       "</any>";
+    const char *data;
+    char *str;
     struct lyd_node *tree;
-    struct lyd_node_any *any;
 
+    data =
+    "<any xmlns=\"urn:tests:a\">"
+        "<element1>"
+            "<x:element2 x:attr2=\"test\" xmlns:a=\"urn:tests:a\" xmlns:x=\"urn:x\">a:data</x:element2>"
+        "</element1>"
+        "<element1a/>"
+    "</any>";
     assert_int_equal(LY_SUCCESS, lyd_parse_xml_data(ctx, data, LYD_VALOPT_DATA_ONLY, &tree));
     assert_non_null(tree);
     assert_int_equal(LYS_ANYDATA, tree->schema->nodetype);
     assert_string_equal("any", tree->schema->name);
-    any = (struct lyd_node_any*)tree;
-    assert_int_equal(LYD_ANYDATA_XML, any->value_type);
-    assert_string_equal("<element1><x:element2 x:attr2=\"test\" xmlns:x=\"urn:x\">x:data</x:element2></element1><element1a/>", any->value.xml);
+
+    lyd_print_mem(&str, tree, LYD_XML, 0);
+    assert_string_equal(str,
+        "<any xmlns=\"urn:tests:a\">"
+            "<element1>"
+                "<element2 xmlns=\"urn:x\" xmlns:x=\"urn:x\" x:attr2=\"test\" xmlns:a=\"urn:tests:a\">a:data</element2>"
+            "</element1>"
+            "<element1a/>"
+        "</any>"
+    );
+    free(str);
 
     lyd_free_all(tree);
     *state = NULL;