[libxml2] Fix support for except in nameclasses



commit 2fab235d10e8aee321133d11df61e4527a02a511
Author: Daniel Veillard <veillard redhat com>
Date:   Mon Mar 16 08:38:36 2015 +0800

    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.

 relaxng.c                   |    6 +++++-
 result/relaxng/565219_0.err |    2 ++
 result/relaxng/565219_1.err |    1 +
 result/relaxng/565219_2.err |    2 ++
 result/relaxng/565219_err   |    1 +
 test/relaxng/565219.rng     |   14 ++++++++++++++
 test/relaxng/565219_0.xml   |    1 +
 test/relaxng/565219_1.xml   |    1 +
 test/relaxng/565219_2.xml   |    1 +
 9 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/relaxng.c b/relaxng.c
index 5357b56..5779e7f 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 0000000..e69de29
diff --git a/result/relaxng/565219_0.err b/result/relaxng/565219_0.err
new file mode 100644
index 0000000..e3f73fa
--- /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 0000000..e69de29
diff --git a/result/relaxng/565219_1.err b/result/relaxng/565219_1.err
new file mode 100644
index 0000000..2999bba
--- /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 0000000..e69de29
diff --git a/result/relaxng/565219_2.err b/result/relaxng/565219_2.err
new file mode 100644
index 0000000..7a997d3
--- /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 0000000..c43e67c
--- /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 0000000..e69de29
diff --git a/test/relaxng/565219.rng b/test/relaxng/565219.rng
new file mode 100644
index 0000000..087ed95
--- /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 0000000..a964a07
--- /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 0000000..f1999f8
--- /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 0000000..a964a07
--- /dev/null
+++ b/test/relaxng/565219_2.xml
@@ -0,0 +1 @@
+<foo xmlns="http://foo.com/"/>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]