more work on Relax-NG, implementing interleave augmented/updated the

* relaxng.c: more work on Relax-NG, implementing interleave
* test/relaxng/* result/relaxng/*: augmented/updated the
  regression tests
Daniel
diff --git a/relaxng.c b/relaxng.c
index 49b089e..0776147 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -42,7 +42,7 @@
 #define DEBUG_CONTENT 1
 #define DEBUG_TYPE 1
 #define DEBUG_VALID 1
-#define DEBUG_INTERLEAVE 1
+#define DEBUG_INTERLEAVE 1 */
 
 #define UNBOUNDED (1 << 30)
 #define TODO 								\
@@ -1299,7 +1299,8 @@
     parent = NULL;
     cur = def;
     while (cur != NULL) {
-	if (cur->type == XML_RELAXNG_ELEMENT) {
+	if ((cur->type == XML_RELAXNG_ELEMENT) ||
+	    (cur->type == XML_RELAXNG_TEXT)) {
 	    if (ret == NULL) {
 		max = 10;
 		ret = (xmlRelaxNGDefinePtr *)
@@ -1322,13 +1323,16 @@
 		    return(NULL);
 		}
 	    }
-	    ret[len++] = def;
+	    ret[len++] = cur;
 	    ret[len] = NULL;
 	} else if ((cur->type == XML_RELAXNG_CHOICE) ||
 		   (cur->type == XML_RELAXNG_INTERLEAVE) ||
 		   (cur->type == XML_RELAXNG_GROUP) ||
 		   (cur->type == XML_RELAXNG_ONEORMORE) ||
-		   (cur->type == XML_RELAXNG_ZEROORMORE)) {
+		   (cur->type == XML_RELAXNG_ZEROORMORE) ||
+		   (cur->type == XML_RELAXNG_OPTIONAL) ||
+		   (cur->type == XML_RELAXNG_REF) ||
+		   (cur->type == XML_RELAXNG_DEF)) {
 	    /*
 	     * Don't go within elements or attributes or string values.
 	     * Just gather the element top list
@@ -3627,7 +3631,7 @@
 xmlRelaxNGValidatePartGroup(xmlRelaxNGValidCtxtPtr ctxt, 
 			    xmlRelaxNGInterleaveGroupPtr *groups,
 			    int nbgroups, xmlNodePtr *nodes, int len) {
-    int level = -1, ret = -1, i, j, k;
+    int level, ret = -1, i, j, k;
     xmlNodePtr *array = NULL, *list, oldseq;
     xmlRelaxNGInterleaveGroupPtr group;
 
@@ -3662,6 +3666,7 @@
 	ctxt->state->seq = oldseq;
 	if (k > 1) {
 	    memset(array, 0, k * sizeof(xmlNodePtr));
+	    level = -1;
 	    ret = xmlRelaxNGValidateWalkPermutations(ctxt, group->rule,
 					  list, array, k, &level, -1);
 	} else {