- while (node != NULL && !mdom_node_has_attribute_ns(node, DOM_CONST_STRING("href"), XLINK_NS_URI))
- node = mdom_node_get_parent(node);
-
- if (node != NULL) {
+ GdomeException exc = 0;
+ GdomeDOMString* namespaceURI = gdome_str_mkref(XLINK_NS_URI);
+ GdomeDOMString* localName = gdome_str_mkref("href");
+
+ if (elem != NULL) {
+ gdome_el_ref(elem, &exc);
+ g_assert(exc == 0);
+ }
+
+ while (elem != NULL && !gdome_el_hasAttributeNS(elem, namespaceURI, localName, &exc)) {
+ GdomeElement* parent = gdome_cast_el(gdome_el_parentNode(elem, &exc));
+ g_assert(exc == 0);
+ gdome_el_unref(elem, &exc);
+ g_assert(exc == 0);
+ elem = parent;
+ }
+ g_assert(exc == 0);
+
+ gdome_str_unref(namespaceURI);
+ gdome_str_unref(localName);
+
+ if (elem != NULL) {
+ gdome_el_unref(elem, &exc);
+ g_assert(exc == 0);