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 @@ +