[libxml2] Fix unability to RelaxNG-validate grammar with choice-based name class
- From: Nick Wellnhofer <nwellnhof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Fix unability to RelaxNG-validate grammar with choice-based name class
- Date: Sun, 25 Aug 2019 12:32:49 +0000 (UTC)
commit ea695ac0d608e79ce7b86804bab64565e85a8866
Author: Jan Pokorný <jpokorny redhat com>
Date: Fri Aug 9 15:09:22 2019 +0200
Fix unability to RelaxNG-validate grammar with choice-based name class
Previously, test/relaxng/ambig_name-class2.xml would fail to validate
against test/relaxng/ambig_name-class2.rng:
> test/relaxng/ambig_name-class2.rng:4:
> element attribute: Relax-NG parser error :
> Found anyName attribute without oneOrMore ancestor
> Relax-NG schema test/relaxng/ambig_name-class2.rng failed to compile
Signed-off-by: Jan Pokorný <jpokorny redhat com>
relaxng.c | 5 ++++-
result/relaxng/ambig_name-class2_err | 1 +
result/relaxng/ambig_name-class2_valid | 0
test/relaxng/ambig_name-class2.rng | 1 +
test/relaxng/ambig_name-class2.xml | 1 +
5 files changed, 7 insertions(+), 1 deletion(-)
---
diff --git a/relaxng.c b/relaxng.c
index 1c337e3d..268c4e76 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -6395,7 +6395,10 @@ xmlRelaxNGCheckRules(xmlRelaxNGParserCtxtPtr ctxt,
NULL, NULL);
}
if ((!(flags & XML_RELAXNG_IN_ONEORMORE))
- && (cur->name == NULL)) {
+ && cur->name == NULL
+ /* following is checking alternative name class readiness
+ in case it went the "choice" route */
+ && cur->nameClass == NULL) {
if (cur->ns == NULL) {
xmlRngPErr(ctxt, cur->node, XML_RNGP_ANYNAME_ATTR_ANCESTOR,
"Found anyName attribute without oneOrMore ancestor\n",
diff --git a/result/relaxng/ambig_name-class2_err b/result/relaxng/ambig_name-class2_err
new file mode 100644
index 00000000..2c1ba8d3
--- /dev/null
+++ b/result/relaxng/ambig_name-class2_err
@@ -0,0 +1 @@
+./test/relaxng/ambig_name-class2.rng validates
diff --git a/result/relaxng/ambig_name-class2_valid b/result/relaxng/ambig_name-class2_valid
new file mode 100644
index 00000000..e69de29b
diff --git a/test/relaxng/ambig_name-class2.rng b/test/relaxng/ambig_name-class2.rng
new file mode 120000
index 00000000..6cc955c1
--- /dev/null
+++ b/test/relaxng/ambig_name-class2.rng
@@ -0,0 +1 @@
+ambig_name-class.xml
\ No newline at end of file
diff --git a/test/relaxng/ambig_name-class2.xml b/test/relaxng/ambig_name-class2.xml
new file mode 100644
index 00000000..3c1e4e25
--- /dev/null
+++ b/test/relaxng/ambig_name-class2.xml
@@ -0,0 +1 @@
+<foo alpha="all"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]