[gxml] XParser: Fixed re-define node namespace
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gxml] XParser: Fixed re-define node namespace
- Date: Mon, 23 Jan 2017 19:57:40 +0000 (UTC)
commit b097d37a68d79b945e95eb24c6d43fd4954a3052
Author: Daniel Espinosa <esodan gmail com>
Date: Mon Jan 23 13:55:38 2017 -0600
XParser: Fixed re-define node namespace
Removed some message from unit tests
gxml/GomElement.vala | 8 +++++++-
gxml/XParser.vala | 16 +++++++++++++++-
test/DomGDocumentTest.vala | 32 ++++++++++++++++++++++++++------
test/GDocumentTest.vala | 2 ++
test/GomDocumentTest.vala | 5 +++--
test/GomElementTest.vala | 11 +++++++----
test/GomSchemaTest.vala | 4 ++++
test/TDocumentTest.vala | 10 ++++++++++
test/TElementTest.vala | 2 ++
9 files changed, 76 insertions(+), 14 deletions(-)
---
diff --git a/gxml/GomElement.vala b/gxml/GomElement.vala
index dc9e2b8..d5d1052 100644
--- a/gxml/GomElement.vala
+++ b/gxml/GomElement.vala
@@ -395,7 +395,7 @@ public class GXml.GomElement : GomNode,
string ns_uri = _element.lookup_namespace_uri (null);
if (ns_uri != null && ns_uri != node.node_value) {
#if DEBUG
- GLib.message ("NSURI: "+ns_uri+" NSURI Attr:"+node.node_value);
+ GLib.message ("Error: NSURI: "+ns_uri+" NSURI Attr:"+node.node_value);
#endif
throw new DomError.NAMESPACE_ERROR
(_("Redefinition of default namespace for %s")
@@ -409,6 +409,12 @@ public class GXml.GomElement : GomNode,
#endif
string nsprefix = _element.lookup_prefix (node.node_value);
string nsuri = _element.lookup_namespace_uri ((node as DomAttr).local_name);
+
+#if DEBUG
+ if (nsprefix != null || nsuri != null)
+ GLib.message ("Ns Prefix = "+nsprefix
+ + "Ns URI: "+nsuri);
+#endif
if ((nsprefix != null || nsuri != null)
&& (nsprefix != (node as DomAttr).local_name
|| nsuri != node.node_value)) {
diff --git a/gxml/XParser.vala b/gxml/XParser.vala
index e0d4e51..7656c1c 100644
--- a/gxml/XParser.vala
+++ b/gxml/XParser.vala
@@ -228,7 +228,6 @@ public class GXml.XParser : Object, GXml.Parser {
#if DEBUG
GLib.message ("Property Read: "+aprefix+":"+nsp+"="+ansuri);
#endif
- if (nsp == element.prefix && ansuri == element.namespace_uri) continue;
string ansp = nsp;
if (nsp != "xmlns")
ansp = aprefix+":"+nsp;
@@ -634,6 +633,21 @@ public class GXml.XParser : Object, GXml.Parser {
// DomElement attributes
foreach (string ak in (node as DomElement).attributes.keys) {
string v = ((node as DomElement).attributes as HashMap<string,string>).get (ak);
+ if ("xmlns:" in ak) {
+ string ns = (node as DomElement).namespace_uri;
+ if (ns != null) {
+ string[] strs = ak.split (":");
+ if (strs.length == 2) {
+ string nsp = strs[1];
+ if (ns == v && nsp == (node as DomElement).prefix) {
+#if DEBUG
+ message ("Attribute Is element NS, skiping...");
+#endif
+ continue;
+ }
+ }
+ }
+ }
size += tw.write_attribute (ak, v);
size += tw.end_attribute ();
if (size > 1500)
diff --git a/test/DomGDocumentTest.vala b/test/DomGDocumentTest.vala
index 527224c..c1e42a3 100644
--- a/test/DomGDocumentTest.vala
+++ b/test/DomGDocumentTest.vala
@@ -68,7 +68,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
public static void add_tests () {
Test.add_func ("/gxml/dom/document/children", () => {
try {
+#if DEBUG
GLib.message ("Doc: "+STRDOC);
+#endif
var doc = new GDocument.from_string (STRDOC) as DomDocument;
DomElement root = doc.document_element;
assert (root != null);
@@ -86,7 +88,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/child_nodes", () => {
try {
+#if DEBUG
GLib.message ("Doc: "+STRDOC);
+#endif
var doc = new GDocument.from_string (STRDOC) as DomDocument;
assert (doc is DomDocument);
assert (doc.child_nodes != null);
@@ -107,7 +111,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/element_collections", () => {
try {
+#if DEBUG
GLib.message ("Doc: "+STRDOC);
+#endif
var doc = new GDocument.from_string (HTMLDOC) as DomDocument;
assert (doc is DomDocument);
var le = doc.get_elements_by_tag_name ("p");
@@ -115,7 +121,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
assert (le[0].get_attribute ("class") == "black");
assert (le[1].get_attribute ("id") == "p01");
var lc = doc.get_elements_by_class_name ("black");
+#if DEBUG
GLib.message ("DOC\n"+(doc as GDocument).to_string ());
+#endif
assert (lc.size == 2);
assert (lc[0].node_name == "p");
assert (lc[0].get_attribute ("class") == "black block");
@@ -283,7 +291,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
assert (ng2.lookup_prefix ("http://live.gnome.org/GXml") == null);
assert (ng2.tag_name == "OtherNode");
+#if DEBUG
GLib.message ("BODY:"+(doc.document_element as GXml.Node).to_string ());
+#endif
var l = doc.document_element.get_elements_by_tag_name ("p");
assert (l != null);
assert (l is DomHTMLCollection);
@@ -365,7 +375,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
assert (n2.attributes.length == 1);
assert (n2.has_attribute_ns ("http://devel.org/","nice"));
assert (!n2.has_attribute_ns ("http://devel.org/","dev:nice"));
+#if DEBUG
GLib.message ("NODE:"+(n2 as GXml.Node).to_string ());
+#endif
assert (n2.get_attribute_ns ("http://devel.org/","nice") == "good");
assert (n2.get_attribute_ns ("http://devel.org/","dev:nice") == null);
} catch (GLib.Error e) {
@@ -375,7 +387,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/api", () => {
try {
+#if DEBUG
GLib.message ("Doc: "+XMLDOC);
+#endif
var doc = new GDocument.from_string (XMLDOC) as DomDocument;
assert (doc.url == "about:blank");
assert (doc.document_uri == "about:blank");
@@ -414,8 +428,10 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
var lec4 = doc.get_elements_by_class_name ("code parent");
assert (lec4.length == 0);
var lec5 = doc.get_elements_by_class_name ("node parent");
+#if DEBUG
GLib.message ("Doc in use:\n"+(doc as GDocument).libxml_to_string ());
GLib.message ("Class node found: "+lec5.length.to_string ());
+#endif
assert (lec5.length == 3);
assert (lec5.item (0) is DomElement);
assert (lec5.item (0).node_name == "MyNode");
@@ -433,7 +449,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
assert (doc.document_element.last_child.node_value == "COMMENT");
var pi = doc.create_processing_instruction ("git","commit");
doc.document_element.append_child (pi);
+#if DEBUG
GLib.message ("DOC: "+(doc.document_element as GXml.Node).to_string ());
+#endif
assert (doc.document_element.last_child is DomProcessingInstruction);
} catch (GLib.Error e) {
GLib.message ("Error: "+ e.message);
@@ -442,7 +460,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/import", () => {
try {
- GLib.message ("Doc: "+XMLDOC);
+ Test.message ("Doc: "+XMLDOC);
var doc = new GDocument.from_string (XMLDOC) as DomDocument;
var doc2 = new GDocument.from_string (STRDOC) as DomDocument;
doc.import_node (doc2.document_element, false);
@@ -458,7 +476,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/adopt", () => {
try {
- GLib.message ("Doc: "+XMLDOC);
+ Test.message ("Doc: "+XMLDOC);
var doc = new GDocument.from_string (XMLDOC) as DomDocument;
var doc2 = new GDocument.from_string (STRDOC) as DomDocument;
doc2.adopt_node (doc.document_element.children.last ());
@@ -475,7 +493,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/event", () => {
try {
- GLib.message ("No implemented...Skiping");
+ Test.message ("No implemented...Skiping");
//TODO: implement
} catch (GLib.Error e) {
GLib.message ("Error: "+ e.message);
@@ -484,7 +502,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/range", () => {
try {
- GLib.message ("No implemented...Skiping");
+ Test.message ("No implemented...Skiping");
//TODO: implement
} catch (GLib.Error e) {
GLib.message ("Error: "+ e.message);
@@ -493,7 +511,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/iterator", () => {
try {
- GLib.message ("No implemented...Skiping");
+ Test.message ("No implemented...Skiping");
//TODO: implement
} catch (GLib.Error e) {
GLib.message ("Error: "+ e.message);
@@ -502,7 +520,7 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
});
Test.add_func ("/gxml/dom/document/walker", () => {
try {
- GLib.message ("No implemented...Skiping");
+ Test.message ("No implemented...Skiping");
//TODO: implement
} catch (GLib.Error e) {
GLib.message ("Error: "+ e.message);
@@ -555,7 +573,9 @@ const string XMLDOC ="<?xml version=\"1.0\"?>
// BUG: libxml2 doesn't support continuos DomText nodes
// when it is added, its data is concatecated in just text
// node
+#if DEBUG
GLib.message ("NTST: "+(ntst as GXml.Node).to_string ());
+#endif
assert (ntst.child_nodes.item (0) is DomText);
assert ((ntst.child_nodes.item (0) as DomText).data == "TEXT1TEXT2");
// BUG: DomText.whole_text
diff --git a/test/GDocumentTest.vala b/test/GDocumentTest.vala
index 601bcc7..9d7df8c 100644
--- a/test/GDocumentTest.vala
+++ b/test/GDocumentTest.vala
@@ -337,7 +337,9 @@ class GDocumentTest : GXmlTest {
var pt = c.attrs.get ("prop");
assert (pt != null);
var pt2 = (c as Element).get_ns_attr ("prop", doc.root.namespaces[0].uri);
+#if DEBUG
GLib.message ("ROOT: "+doc.root.to_string ());
+#endif
assert (doc.root.to_string () == "<root
xmlns:gxml=\"http://www.gnome.org/GXml\"><child xmlns:gxml2=\"http://www.gnome.org/GXml2\"
gxml:prop=\"Ten\"/></root>");
} catch (GLib.Error e) {
GLib.message ("ERROR: "+ e.message);
diff --git a/test/GomDocumentTest.vala b/test/GomDocumentTest.vala
index b7a6f86..2a2ac8d 100644
--- a/test/GomDocumentTest.vala
+++ b/test/GomDocumentTest.vala
@@ -167,8 +167,9 @@ class GomDocumentTest : GXmlTest {
assert ("<shortdesc xml:lang=\"en\">GObject XML and Serialization
API</shortdesc>"
in s);
assert ("<homepage rdf:resource=\"https://wiki.gnome.org/GXml\"/>" in s);
- assert ("<foaf:Person>" in s);
- assert ("<foaf:name>Daniel Espinosa</foaf:name>" in s);
+ assert ("<foaf:Person" in s);
+ assert ("<foaf:name " in s);
+ assert ("Daniel Espinosa</foaf:name>"in s);
} catch (GLib.Error e) {
GLib.message ("Error: "+e.message);
assert_not_reached ();
diff --git a/test/GomElementTest.vala b/test/GomElementTest.vala
index 64693b4..2936811 100644
--- a/test/GomElementTest.vala
+++ b/test/GomElementTest.vala
@@ -74,13 +74,16 @@ class GomElementTest : GXmlTest {
assert (node.node_name == "magic:Potion");
assert ((node as DomElement).namespace_uri == "http://hogwarts.co.uk/magic");
assert ((node as DomElement).prefix == "magic");
- assert ((node as DomElement).attributes.size == 2);
- GLib.message ("Attributes: "+(node as DomElement).attributes.size.to_string
());
- /*foreach (string k in (node as DomElement).attributes.keys) {
+#if DEBUG
+ message ("Element: "+(node as GomElement).write_string ());
+ message ("Attributes: "+(node as DomElement).attributes.length.to_string ());
+ foreach (string k in (node as DomElement).attributes.keys) {
string v = (node as DomElement).get_attribute (k);
if (v == null) v = "NULL";
GLib.message ("Attribute: "+k+"="+v);
- }*/
+ }
+#endif
+ assert ((node as DomElement).attributes.length == 2);
assert ((node as DomElement).get_attribute ("xmlns:magic") ==
"http://hogwarts.co.uk/magic");
assert ((node as DomElement).get_attribute_ns
("http://www.w3.org/2000/xmlns/", "magic") == "http://hogwarts.co.uk/magic");
assert ((node as DomElement).get_attribute ("xmlns:products") ==
"http://diagonalley.co.uk/products");
diff --git a/test/GomSchemaTest.vala b/test/GomSchemaTest.vala
index 50526d8..04c1a54 100644
--- a/test/GomSchemaTest.vala
+++ b/test/GomSchemaTest.vala
@@ -29,11 +29,15 @@ class GomSchemaTest : GXmlTest {
var f = GLib.File.new_for_path (GXmlTestConfig.TEST_DIR+"/schema-test.xsd");
assert (f.query_exists ());
var sch = new GomXsdSchema ();
+#if DEBUG
message ("XSD Empty: "+sch.write_string ());
message ("XSD node name: "+sch.node_name);
+#endif
assert (sch.local_name == "schema");
sch.read_from_file (f);
+#if DEBUG
message ("XSD: "+sch.write_string ());
+#endif
assert (sch.simple_type_definitions != null);
var st = sch.simple_type_definitions.get_item (0) as GomXsdSimpleType;
assert (st != null);
diff --git a/test/TDocumentTest.vala b/test/TDocumentTest.vala
index 2c65afc..6f211cf 100644
--- a/test/TDocumentTest.vala
+++ b/test/TDocumentTest.vala
@@ -723,7 +723,9 @@ class TDocumentTest : GXmlTest {
assert (d.root.name == "root");
assert (d.root.children_nodes[0] != null);
assert (d.root.children_nodes[0].name == "child");
+#if DEBUG
GLib.message ("child attri: "+(d.root.children_nodes[0].attrs.size).to_string
());
+#endif
assert (d.root.children_nodes[0].attrs.size == 2);
assert (d.root.children_nodes[0].attrs["v"] != null);
assert (d.root.children_nodes[0].children_nodes[0] is GXml.Text);
@@ -757,7 +759,9 @@ class TDocumentTest : GXmlTest {
assert (nc != null);
assert (nc.name == "Read");
assert (nc.children_nodes.size == 2);
+#if DEBUG
GLib.message ("from file");
+#endif
// Remove all unwanted
TDocument.ReadTypeFunc f1 = (node, tr)=>{
Test.message ("ReadType check node: "+node.name);
@@ -803,7 +807,9 @@ class TDocumentTest : GXmlTest {
assert (nc3.name == "Read");
assert (nc3.children_nodes.size == 1);
// From URI
+#if DEBUG
GLib.message ("from uri");
+#endif
var d4 = new TDocument.from_uri_with_readtype_func (file.get_uri (), f2);
Test.message (@"$d3");
assert (d4.root != null);
@@ -817,7 +823,9 @@ class TDocumentTest : GXmlTest {
assert (nc4.name == "Read");
assert (nc4.children_nodes.size == 1);
// From Stream
+#if DEBUG
GLib.message ("from stream");
+#endif
var file2 = GLib.File.new_for_path
(GXmlTestConfig.TEST_DIR+"/t-read-test.xml");
var d5 = new TDocument.from_stream_with_readtype_func (file2.read (), f1);
assert (d5.root != null);
@@ -832,7 +840,9 @@ class TDocumentTest : GXmlTest {
assert (nc5.name == "Read");
assert (nc5.children_nodes.size == 1);
// From string
+#if DEBUG
GLib.message ("from string");
+#endif
var d6 = new TDocument.from_string_with_readtype_func
("<root><Read/><NoRead/><NoRead/><Read/><NoRead/></root>", f1);
assert (d6.root != null);
assert (d6.root.children_nodes.size == 2);
diff --git a/test/TElementTest.vala b/test/TElementTest.vala
index f83ab91..048dd77 100644
--- a/test/TElementTest.vala
+++ b/test/TElementTest.vala
@@ -657,7 +657,9 @@ class TElementTest : GXmlTest {
};
var d2 = new TDocument ();
TDocument.read_doc (d2, file, f1);
+#if DEBUG
GLib.message (@"$d2");
+#endif
assert (d2.root != null);
assert (d2.root.children_nodes.size == 7);
var n2 = d2.root.children_nodes[6];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]