fixed a problem in Relax-NG validation #159968 added the test to the

* relaxng.c: fixed a problem in Relax-NG validation #159968
* test/relaxng/list.* result/relaxng/list_*: added the test
  to the regression suite
Daniel
diff --git a/ChangeLog b/ChangeLog
index 6d8fe42..d8aa20f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Mar 31 15:36:52 CEST 2005 Daniel Veillard <daniel@veillard.com>
+
+	* relaxng.c: fixed a problem in Relax-NG validation #159968
+	* test/relaxng/list.* result/relaxng/list_*: added the test
+	  to the regression suite
+
 Thu Mar 31 13:06:02 CEST 2005 Daniel Veillard <daniel@veillard.com>
 
 	* python/libxml.c: fixed bug #168504
diff --git a/relaxng.c b/relaxng.c
index 16174e0..143d704 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -6129,11 +6129,18 @@
         ret = XML_RELAXNG_CONTENT_EMPTY;
         if ((cur->type == XML_RELAXNG_REF) ||
             (cur->type == XML_RELAXNG_PARENTREF)) {
+           /*
+            * This should actually be caught by list//element(ref) at the
+            * element boundaries, c.f. Bug #159968 local refs are dropped
+            * in step 4.19.
+            */
+#if 0
             if (flags & XML_RELAXNG_IN_LIST) {
                 xmlRngPErr(ctxt, cur->node, XML_RNGP_PAT_LIST_REF,
                            "Found forbidden pattern list//ref\n", NULL,
                            NULL);
             }
+#endif
             if (flags & XML_RELAXNG_IN_DATAEXCEPT) {
                 xmlRngPErr(ctxt, cur->node, XML_RNGP_PAT_DATA_EXCEPT_REF,
                            "Found forbidden pattern data/except//ref\n",
diff --git a/result/relaxng/list_0 b/result/relaxng/list_0
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/list_0
diff --git a/result/relaxng/list_0.err b/result/relaxng/list_0.err
new file mode 100644
index 0000000..5c8ca7c
--- /dev/null
+++ b/result/relaxng/list_0.err
@@ -0,0 +1 @@
+./test/relaxng/list_0.xml validates
diff --git a/result/relaxng/list_1 b/result/relaxng/list_1
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/list_1
diff --git a/result/relaxng/list_1.err b/result/relaxng/list_1.err
new file mode 100644
index 0000000..3ae35ae
--- /dev/null
+++ b/result/relaxng/list_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/list_1.xml:1: element elem1: Relax-NG validity error : Element elem1 failed to validate attributes
+./test/relaxng/list_1.xml fails to validate
diff --git a/result/relaxng/list_err b/result/relaxng/list_err
new file mode 100644
index 0000000..748e21b
--- /dev/null
+++ b/result/relaxng/list_err
@@ -0,0 +1 @@
+./test/relaxng/list.rng validates
diff --git a/result/relaxng/list_valid b/result/relaxng/list_valid
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/result/relaxng/list_valid
diff --git a/test/relaxng/list.rng b/test/relaxng/list.rng
new file mode 100644
index 0000000..57de17c
--- /dev/null
+++ b/test/relaxng/list.rng
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar
+    xmlns="http://relaxng.org/ns/structure/1.0"
+    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<define name="pattern1">
+    <data type="string">
+        <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)</param>
+    </data>
+</define>
+
+<start>
+    <element name="elem1">
+        <attribute name="attr1">
+            <list>
+                <ref name="pattern1"/>
+            </list>
+        </attribute>
+    </element>
+</start>
+
+</grammar>
diff --git a/test/relaxng/list_0.xml b/test/relaxng/list_0.xml
new file mode 100644
index 0000000..a6b4d60
--- /dev/null
+++ b/test/relaxng/list_0.xml
@@ -0,0 +1 @@
+<elem1 attr1="0"/>
diff --git a/test/relaxng/list_1.xml b/test/relaxng/list_1.xml
new file mode 100644
index 0000000..a8907cc
--- /dev/null
+++ b/test/relaxng/list_1.xml
@@ -0,0 +1 @@
+<elem1 attr1="a"/>