summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Veillard <veillard@redhat.com>2015-03-16 08:38:36 +0800
committerDaniel Veillard <veillard@redhat.com>2015-03-16 08:43:37 +0800
commit2fab235d10e8aee321133d11df61e4527a02a511 (patch)
treeb53a5b58cd7d08fb655a0899337cd0ef4d49e7d1
parent02b252d7a272483077f905eb3a71d489410d1c06 (diff)
downloadlibxml2-2fab235d10e8aee321133d11df61e4527a02a511.tar.gz
Fix support for except in nameclasses
For https://bugzilla.gnome.org/show_bug.cgi?id=565219 The code was imply missing even if simple, added a few regression tests.
-rw-r--r--relaxng.c6
-rw-r--r--result/relaxng/565219_00
-rw-r--r--result/relaxng/565219_0.err2
-rw-r--r--result/relaxng/565219_10
-rw-r--r--result/relaxng/565219_1.err1
-rw-r--r--result/relaxng/565219_20
-rw-r--r--result/relaxng/565219_2.err2
-rw-r--r--result/relaxng/565219_err1
-rw-r--r--result/relaxng/565219_valid0
-rw-r--r--test/relaxng/565219.rng14
-rw-r--r--test/relaxng/565219_0.xml1
-rw-r--r--test/relaxng/565219_1.xml1
-rw-r--r--test/relaxng/565219_2.xml1
13 files changed, 28 insertions, 1 deletions
diff --git a/relaxng.c b/relaxng.c
index 5357b569..5779e7fc 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -3819,7 +3819,11 @@ xmlRelaxNGCompareNameClasses(xmlRelaxNGDefinePtr def1,
return (0);
return (1);
} else if (def1->type == XML_RELAXNG_EXCEPT) {
- TODO ret = 0;
+ ret = xmlRelaxNGCompareNameClasses(def1->content, def2);
+ if (ret == 0)
+ ret = 1;
+ else if (ret == 1)
+ ret = 0;
} else {
TODO ret = 0;
}
diff --git a/result/relaxng/565219_0 b/result/relaxng/565219_0
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/result/relaxng/565219_0
diff --git a/result/relaxng/565219_0.err b/result/relaxng/565219_0.err
new file mode 100644
index 00000000..e3f73fac
--- /dev/null
+++ b/result/relaxng/565219_0.err
@@ -0,0 +1,2 @@
+./test/relaxng/565219_0.xml:1: element foo: Relax-NG validity error : Element foo has wrong namespace: expecting http://bar.com/
+./test/relaxng/565219_0.xml fails to validate
diff --git a/result/relaxng/565219_1 b/result/relaxng/565219_1
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/result/relaxng/565219_1
diff --git a/result/relaxng/565219_1.err b/result/relaxng/565219_1.err
new file mode 100644
index 00000000..2999bbae
--- /dev/null
+++ b/result/relaxng/565219_1.err
@@ -0,0 +1 @@
+./test/relaxng/565219_1.xml validates
diff --git a/result/relaxng/565219_2 b/result/relaxng/565219_2
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/result/relaxng/565219_2
diff --git a/result/relaxng/565219_2.err b/result/relaxng/565219_2.err
new file mode 100644
index 00000000..7a997d35
--- /dev/null
+++ b/result/relaxng/565219_2.err
@@ -0,0 +1,2 @@
+./test/relaxng/565219_2.xml:1: element foo: Relax-NG validity error : Element foo has wrong namespace: expecting http://bar.com/
+./test/relaxng/565219_2.xml fails to validate
diff --git a/result/relaxng/565219_err b/result/relaxng/565219_err
new file mode 100644
index 00000000..c43e67cf
--- /dev/null
+++ b/result/relaxng/565219_err
@@ -0,0 +1 @@
+./test/relaxng/565219.rng validates
diff --git a/result/relaxng/565219_valid b/result/relaxng/565219_valid
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/result/relaxng/565219_valid
diff --git a/test/relaxng/565219.rng b/test/relaxng/565219.rng
new file mode 100644
index 00000000..087ed956
--- /dev/null
+++ b/test/relaxng/565219.rng
@@ -0,0 +1,14 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0">
+ <start>
+ <element>
+ <anyName>
+ <except>
+ <nsName ns="http://bar.com/"/>
+ <nsName ns="http://foo.com/"/>
+ </except>
+ </anyName>
+ <empty/>
+ </element>
+ </start>
+</grammar>
+
diff --git a/test/relaxng/565219_0.xml b/test/relaxng/565219_0.xml
new file mode 100644
index 00000000..a964a07b
--- /dev/null
+++ b/test/relaxng/565219_0.xml
@@ -0,0 +1 @@
+<foo xmlns="http://foo.com/"/>
diff --git a/test/relaxng/565219_1.xml b/test/relaxng/565219_1.xml
new file mode 100644
index 00000000..f1999f80
--- /dev/null
+++ b/test/relaxng/565219_1.xml
@@ -0,0 +1 @@
+<foo/>
diff --git a/test/relaxng/565219_2.xml b/test/relaxng/565219_2.xml
new file mode 100644
index 00000000..a964a07b
--- /dev/null
+++ b/test/relaxng/565219_2.xml
@@ -0,0 +1 @@
+<foo xmlns="http://foo.com/"/>