diff --git a/.gitignore b/.gitignore
index 62cd025bd35416eee7c74948205f1f0bb623da95..605bb2f7180ea423dcf765e242a931c68e151f15 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,6 +15,7 @@ Makefile.in
aclocal.m4
autom4te.cache
bissect*
+compile
config.guess
config.h
config.h.in
@@ -59,6 +60,7 @@ install-sh
libtool
libxml-2.0-uninstalled.pc
libxml-2.0.pc
+libxml2-config.cmake
libxml2.la
libxml2.spec
list
diff --git a/relaxng.c b/relaxng.c
index 88d351df86a150a17f8aecd92e9d8ed957eb6474..8306e5464d0f677041b7c5b5fab8163c8aae5b4f 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -1573,6 +1573,9 @@ xmlRelaxNGRemoveRedefine(xmlRelaxNGParserCtxtPtr ctxt,
#endif
}
}
+ if (xmlRelaxNGRemoveRedefine(ctxt, URL, tmp->children, name) == 1) {
+ found = 1;
+ }
}
tmp = tmp2;
}
@@ -1739,7 +1742,18 @@ xmlRelaxNGLoadInclude(xmlRelaxNGParserCtxtPtr ctxt, const xmlChar * URL,
xmlFree(name);
}
}
- cur = cur->next;
+ if (IS_RELAXNG(cur, "div") && cur->children != NULL) {
+ cur = cur->children;
+ } else {
+ if (cur->next != NULL) {
+ cur = cur->next;
+ } else {
+ while (cur->parent != node && cur->parent->next == NULL) {
+ cur = cur->parent;
+ }
+ cur = cur->parent != node ? cur->parent->next : NULL;
+ }
+ }
}
@@ -5347,11 +5361,15 @@ xmlRelaxNGParseNameClass(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node,
xmlNodePtr child;
xmlRelaxNGDefinePtr last = NULL;
- ret = xmlRelaxNGNewDefine(ctxt, node);
- if (ret == NULL)
- return (NULL);
- ret->parent = def;
- ret->type = XML_RELAXNG_CHOICE;
+ if (def->type == XML_RELAXNG_CHOICE) {
+ ret = def;
+ } else {
+ ret = xmlRelaxNGNewDefine(ctxt, node);
+ if (ret == NULL)
+ return (NULL);
+ ret->parent = def;
+ ret->type = XML_RELAXNG_CHOICE;
+ }
if (node->children == NULL) {
xmlRngPErr(ctxt, node, XML_RNGP_CHOICE_EMPTY,
@@ -5363,7 +5381,7 @@ xmlRelaxNGParseNameClass(xmlRelaxNGParserCtxtPtr ctxt, xmlNodePtr node,
tmp = xmlRelaxNGParseNameClass(ctxt, child, ret);
if (tmp != NULL) {
if (last == NULL) {
- last = ret->nameClass = tmp;
+ last = tmp;
} else {
last->next = tmp;
last = tmp;
diff --git a/result/relaxng/anyName0_0 b/result/relaxng/anyName0_0
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/result/relaxng/anyName0_0.err b/result/relaxng/anyName0_0.err
new file mode 100644
index 0000000000000000000000000000000000000000..f660c26d219193edbebc3c8f92228ed4de1562d8
--- /dev/null
+++ b/result/relaxng/anyName0_0.err
@@ -0,0 +1 @@
+./test/relaxng/anyName0_0.xml validates
diff --git a/result/relaxng/anyName0_err b/result/relaxng/anyName0_err
new file mode 100644
index 0000000000000000000000000000000000000000..ab6f08da42552eb2f317e35edcc31b1b199f6b88
--- /dev/null
+++ b/result/relaxng/anyName0_err
@@ -0,0 +1 @@
+./test/relaxng/anyName0.rng validates
diff --git a/result/relaxng/anyName0_valid b/result/relaxng/anyName0_valid
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/result/relaxng/include0_0 b/result/relaxng/include0_0
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/result/relaxng/include0_0.err b/result/relaxng/include0_0.err
new file mode 100644
index 0000000000000000000000000000000000000000..24013bc5b3f2a121ff99bf572118c5980755b04f
--- /dev/null
+++ b/result/relaxng/include0_0.err
@@ -0,0 +1 @@
+./test/relaxng/include0_0.xml validates
diff --git a/result/relaxng/include0_err b/result/relaxng/include0_err
new file mode 100644
index 0000000000000000000000000000000000000000..cd16cbe2cacf065170f4580f03d3d29c6bbefde3
--- /dev/null
+++ b/result/relaxng/include0_err
@@ -0,0 +1 @@
+./test/relaxng/include0.rng validates
diff --git a/result/relaxng/include0_valid b/result/relaxng/include0_valid
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/result/relaxng/include1_0 b/result/relaxng/include1_0
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/result/relaxng/include1_0.err b/result/relaxng/include1_0.err
new file mode 100644
index 0000000000000000000000000000000000000000..8c13f4c5e1b70662589fac089a339e40ec13908e
--- /dev/null
+++ b/result/relaxng/include1_0.err
@@ -0,0 +1 @@
+./test/relaxng/include1_0.xml validates
diff --git a/result/relaxng/include1_err b/result/relaxng/include1_err
new file mode 100644
index 0000000000000000000000000000000000000000..ad4850b0b65c34d75083e6a4d517b8c0ae50a6d5
--- /dev/null
+++ b/result/relaxng/include1_err
@@ -0,0 +1 @@
+./test/relaxng/include1.rng validates
diff --git a/result/relaxng/include1_valid b/result/relaxng/include1_valid
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/relaxng/anyName0.rng b/test/relaxng/anyName0.rng
new file mode 100644
index 0000000000000000000000000000000000000000..9fc5ead082af613bb2a6c8219fdd3f53eaeccf0f
--- /dev/null
+++ b/test/relaxng/anyName0.rng
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+ a
+ b
+
+ c
+
+
+
+
+
diff --git a/test/relaxng/anyName0_0.xml b/test/relaxng/anyName0_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fb08e36d5fb4a0db7793edc70d2941c479b6ac36
--- /dev/null
+++ b/test/relaxng/anyName0_0.xml
@@ -0,0 +1 @@
+
diff --git a/test/relaxng/include0.inc b/test/relaxng/include0.inc
new file mode 100644
index 0000000000000000000000000000000000000000..8636ee4e1cac22deab5f32be54724bd5ff5689ce
--- /dev/null
+++ b/test/relaxng/include0.inc
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/test/relaxng/include0.rng b/test/relaxng/include0.rng
new file mode 100644
index 0000000000000000000000000000000000000000..e8edb92f5aa35249f9102d050da5e6ec2a7a58ab
--- /dev/null
+++ b/test/relaxng/include0.rng
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/relaxng/include0_0.xml b/test/relaxng/include0_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f3f286eafc9c7138f37da2bc8ec3efd25d385e6b
--- /dev/null
+++ b/test/relaxng/include0_0.xml
@@ -0,0 +1 @@
+
diff --git a/test/relaxng/include1-0.inc b/test/relaxng/include1-0.inc
new file mode 100644
index 0000000000000000000000000000000000000000..87c6802899d2013880410a274c4c71d219639c30
--- /dev/null
+++ b/test/relaxng/include1-0.inc
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/relaxng/include1-1.inc b/test/relaxng/include1-1.inc
new file mode 100644
index 0000000000000000000000000000000000000000..8af51ec0052eaaf9cafac29666c52816a1184952
--- /dev/null
+++ b/test/relaxng/include1-1.inc
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/test/relaxng/include1.rng b/test/relaxng/include1.rng
new file mode 100644
index 0000000000000000000000000000000000000000..c36bff931e50307bff512da6ab2d1ad53265a95a
--- /dev/null
+++ b/test/relaxng/include1.rng
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/relaxng/include1_0.xml b/test/relaxng/include1_0.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d80a5e273cc7d10ccfdbfaed02e4797c1984348c
--- /dev/null
+++ b/test/relaxng/include1_0.xml
@@ -0,0 +1 @@
+