debugging of externalRef augmented/updated the regression tests Daniel

* relaxng.c: debugging of externalRef
* test/relaxng/* result/relaxng/*: augmented/updated the
  regression tests
Daniel
diff --git a/ChangeLog b/ChangeLog
index dc84fcd..fef2662 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Jan 29 23:44:58 CET 2003 Daniel Veillard <daniel@veillard.com>
+
+	* relaxng.c: debugging of externalRef
+	* test/relaxng/* result/relaxng/*: augmented/updated the
+	  regression tests
+
 Wed Jan 29 22:06:04 CET 2003 Daniel Veillard <daniel@veillard.com>
 
 	* relaxng.c: more work on Relax-NG, implementing externalRef
diff --git a/relaxng.c b/relaxng.c
index 9b553b1..85c49a0 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -2703,6 +2703,7 @@
 xmlRelaxNGParseDocument(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node) {
     xmlRelaxNGPtr schema = NULL;
     const xmlChar *olddefine;
+    xmlRelaxNGGrammarPtr old;
 
     if ((ctxt == NULL) || (node == NULL))
         return (NULL);
@@ -2721,8 +2722,11 @@
 	    return(schema);
 	}
 	schema->topgrammar->parent = NULL;
+	old = ctxt->grammar;
 	ctxt->grammar = schema->topgrammar;
 	xmlRelaxNGParseStart(ctxt, node);
+	if (old != NULL)
+	    ctxt->grammar = old;
     }
     ctxt->define = olddefine;
 
@@ -3318,8 +3322,12 @@
 	    xmlRelaxNGDumpDefines(output, define->content);
 	    fprintf(output, "</ref>\n");
 	    break;
-        case XML_RELAXNG_DATATYPE:
 	case XML_RELAXNG_EXTERNALREF:
+	    fprintf(output, "<externalRef");
+	    xmlRelaxNGDumpDefines(output, define->content);
+	    fprintf(output, "</externalRef>\n");
+	    break;
+        case XML_RELAXNG_DATATYPE:
         case XML_RELAXNG_VALUE:
 	    TODO
 	    break;
diff --git a/result/relaxng/tutor3_2_1.err b/result/relaxng/tutor3_2_1.err
index 0e6dc04..bb09dbc 100644
--- a/result/relaxng/tutor3_2_1.err
+++ b/result/relaxng/tutor3_2_1.err
@@ -1,3 +1,3 @@
-error detected at relaxng.c:4252
-error detected at relaxng.c:4300
+error detected at relaxng.c:4260
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated card : -1
diff --git a/result/relaxng/tutor3_5_2.err b/result/relaxng/tutor3_5_2.err
index bddb830..3b9d5ea 100644
--- a/result/relaxng/tutor3_5_2.err
+++ b/result/relaxng/tutor3_5_2.err
@@ -1,5 +1,5 @@
 xmlRelaxNGValidateAttribute(name): -1
 xmlRelaxNGValidateDefinition(): validated email : 0
 xmlRelaxNGValidateDefinition(): validated card : -1
-error detected at relaxng.c:4300
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated addressBook : -1
diff --git a/result/relaxng/tutor5_3_1.err b/result/relaxng/tutor5_3_1.err
index 16bccbc..7c13c3c 100644
--- a/result/relaxng/tutor5_3_1.err
+++ b/result/relaxng/tutor5_3_1.err
@@ -1,3 +1,3 @@
-error detected at relaxng.c:4431
+error detected at relaxng.c:4439
 xmlRelaxNGValidateDefinition(): validated note : 0
 xmlRelaxNGValidateDefinition(): validated bad : -1
diff --git a/result/relaxng/tutor6_1_3.err b/result/relaxng/tutor6_1_3.err
index 8cfe317..722275e 100644
--- a/result/relaxng/tutor6_1_3.err
+++ b/result/relaxng/tutor6_1_3.err
@@ -1,5 +1,5 @@
 xmlRelaxNGValidateAttribute(preferredFormat): -1
 xmlRelaxNGValidateAttribute(email): 0
 xmlRelaxNGValidateAttribute(name): 0
-error detected at relaxng.c:4308
+error detected at relaxng.c:4316
 xmlRelaxNGValidateDefinition(): validated card : -1
diff --git a/result/relaxng/tutor6_2_4.err b/result/relaxng/tutor6_2_4.err
index 37ab62b..86b2dbb 100644
--- a/result/relaxng/tutor6_2_4.err
+++ b/result/relaxng/tutor6_2_4.err
@@ -1,5 +1,5 @@
 xmlRelaxNGValidateDefinition(): validated name : 0
 xmlRelaxNGValidateDefinition(): validated email : 0
-error detected at relaxng.c:4300
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated preferredFormat : -1
 xmlRelaxNGValidateDefinition(): validated card : -1
diff --git a/result/relaxng/tutor6_3_1.err b/result/relaxng/tutor6_3_1.err
index 8cfe317..722275e 100644
--- a/result/relaxng/tutor6_3_1.err
+++ b/result/relaxng/tutor6_3_1.err
@@ -1,5 +1,5 @@
 xmlRelaxNGValidateAttribute(preferredFormat): -1
 xmlRelaxNGValidateAttribute(email): 0
 xmlRelaxNGValidateAttribute(name): 0
-error detected at relaxng.c:4308
+error detected at relaxng.c:4316
 xmlRelaxNGValidateDefinition(): validated card : -1
diff --git a/result/relaxng/tutor7_1_2.err b/result/relaxng/tutor7_1_2.err
index 1a7a9a1..472f0e6 100644
--- a/result/relaxng/tutor7_1_2.err
+++ b/result/relaxng/tutor7_1_2.err
@@ -1,5 +1,5 @@
 Unimplemented block at xmlschemastypes.c:1132
-error detected at relaxng.c:3510
-error detected at relaxng.c:4485
-error detected at relaxng.c:4300
+error detected at relaxng.c:3518
+error detected at relaxng.c:4493
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated vector : -1
diff --git a/result/relaxng/tutor7_1_3.err b/result/relaxng/tutor7_1_3.err
index 9fc66d8..095756e 100644
--- a/result/relaxng/tutor7_1_3.err
+++ b/result/relaxng/tutor7_1_3.err
@@ -1,6 +1,6 @@
 Unimplemented block at xmlschemastypes.c:1132
 Unimplemented block at xmlschemastypes.c:1132
-error detected at relaxng.c:3698
-error detected at relaxng.c:4485
-error detected at relaxng.c:4300
+error detected at relaxng.c:3706
+error detected at relaxng.c:4493
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated vector : -1
diff --git a/result/relaxng/tutor7_2_4.err b/result/relaxng/tutor7_2_4.err
index cc02874..edb18a4 100644
--- a/result/relaxng/tutor7_2_4.err
+++ b/result/relaxng/tutor7_2_4.err
@@ -1,3 +1,3 @@
-error detected at relaxng.c:3673
-error detected at relaxng.c:4485
+error detected at relaxng.c:3681
+error detected at relaxng.c:4493
 xmlRelaxNGValidateDefinition(): validated vector : -1
diff --git a/result/relaxng/tutor7_3_4.err b/result/relaxng/tutor7_3_4.err
index 77a97b1..e955ba5 100644
--- a/result/relaxng/tutor7_3_4.err
+++ b/result/relaxng/tutor7_3_4.err
@@ -1,7 +1,7 @@
 Unimplemented block at xmlschemastypes.c:1135
 Unimplemented block at xmlschemastypes.c:1135
 Unimplemented block at xmlschemastypes.c:1135
-error detected at relaxng.c:3698
-error detected at relaxng.c:4485
-error detected at relaxng.c:4300
+error detected at relaxng.c:3706
+error detected at relaxng.c:4493
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated path : -1
diff --git a/result/relaxng/tutor7_3_5.err b/result/relaxng/tutor7_3_5.err
index b33e88d..b0622fe 100644
--- a/result/relaxng/tutor7_3_5.err
+++ b/result/relaxng/tutor7_3_5.err
@@ -1,5 +1,5 @@
 Unimplemented block at xmlschemastypes.c:1135
-error detected at relaxng.c:3510
-error detected at relaxng.c:4485
-error detected at relaxng.c:4300
+error detected at relaxng.c:3518
+error detected at relaxng.c:4493
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated path : -1
diff --git a/result/relaxng/tutor8_2_4.err b/result/relaxng/tutor8_2_4.err
index a23a6fe..e4d178a 100644
--- a/result/relaxng/tutor8_2_4.err
+++ b/result/relaxng/tutor8_2_4.err
@@ -3,5 +3,5 @@
   6 groups
 xmlRelaxNGValidateDefinition(): validated title : 0
 xmlRelaxNGValidateDefinition(): validated title : 0
-error detected at relaxng.c:4300
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated head : -1
diff --git a/result/relaxng/tutor8_2_5.err b/result/relaxng/tutor8_2_5.err
index 7a12268..1ddcbe6 100644
--- a/result/relaxng/tutor8_2_5.err
+++ b/result/relaxng/tutor8_2_5.err
@@ -1,6 +1,6 @@
 xmlRelaxNGComputeInterleaves(interleave0)
   6 child
   6 groups
-error detected at relaxng.c:4246
-error detected at relaxng.c:4300
+error detected at relaxng.c:4254
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated head : -1
diff --git a/result/relaxng/tutor8_2_6.err b/result/relaxng/tutor8_2_6.err
index 7fe125a..e4b1e12 100644
--- a/result/relaxng/tutor8_2_6.err
+++ b/result/relaxng/tutor8_2_6.err
@@ -4,5 +4,5 @@
 xmlRelaxNGValidateDefinition(): validated title : 0
 xmlRelaxNGValidateDefinition(): validated base : 0
 xmlRelaxNGValidateDefinition(): validated base : 0
-error detected at relaxng.c:4300
+error detected at relaxng.c:4308
 xmlRelaxNGValidateDefinition(): validated head : -1
diff --git a/result/relaxng/tutor9_2_1 b/result/relaxng/tutor9_2_1
new file mode 100644
index 0000000..fc174ff
--- /dev/null
+++ b/result/relaxng/tutor9_2_1
@@ -0,0 +1 @@
+./test/relaxng/tutor9_2_1.xml validates
diff --git a/result/relaxng/tutor9_2_1.err b/result/relaxng/tutor9_2_1.err
new file mode 100644
index 0000000..73dc09e
--- /dev/null
+++ b/result/relaxng/tutor9_2_1.err
@@ -0,0 +1,3 @@
+xmlRelaxNGValidateDefinition(): validated a : 0
+xmlRelaxNGValidateDefinition(): validated b : 0
+xmlRelaxNGValidateDefinition(): validated data : 0
diff --git a/result/relaxng/tutor9_2_2 b/result/relaxng/tutor9_2_2
new file mode 100644
index 0000000..a07aa0d
--- /dev/null
+++ b/result/relaxng/tutor9_2_2
@@ -0,0 +1 @@
+./test/relaxng/tutor9_2_2.xml validates
diff --git a/result/relaxng/tutor9_2_2.err b/result/relaxng/tutor9_2_2.err
new file mode 100644
index 0000000..73dc09e
--- /dev/null
+++ b/result/relaxng/tutor9_2_2.err
@@ -0,0 +1,3 @@
+xmlRelaxNGValidateDefinition(): validated a : 0
+xmlRelaxNGValidateDefinition(): validated b : 0
+xmlRelaxNGValidateDefinition(): validated data : 0
diff --git a/test/relaxng/tutor9_2.rng b/test/relaxng/tutor9_2.rng
new file mode 100644
index 0000000..cb434bd
--- /dev/null
+++ b/test/relaxng/tutor9_2.rng
@@ -0,0 +1,7 @@
+<element name="data" xmlns="http://relaxng.org/ns/structure/1.0">
+  <choice>
+    <externalRef href="pattern1.rng"/>
+    <externalRef href="pattern2.rng"/>
+  </choice>
+</element>
+
diff --git a/test/relaxng/tutor9_2_1.xml b/test/relaxng/tutor9_2_1.xml
new file mode 100644
index 0000000..2ca54ee
--- /dev/null
+++ b/test/relaxng/tutor9_2_1.xml
@@ -0,0 +1,4 @@
+<data>
+  <a>a</a>
+  <b>a</b>
+</data>
diff --git a/test/relaxng/tutor9_2_2.xml b/test/relaxng/tutor9_2_2.xml
new file mode 100644
index 0000000..2ca54ee
--- /dev/null
+++ b/test/relaxng/tutor9_2_2.xml
@@ -0,0 +1,4 @@
+<data>
+  <a>a</a>
+  <b>a</b>
+</data>