static inline int
match_ns(php_sxe_object *sxe, xmlNodePtr node, xmlChar *name)
{
- if (!xmlStrcmp(node->ns->prefix, name) || !xmlStrcmp((xmlChar *) xmlHashLookup(sxe->nsmap, node->ns->href), name)) {
+ xmlChar *prefix;
+
+ prefix = xmlHashLookup(sxe->nsmap, node->ns->href);
+ if (prefix == NULL) {
+ prefix = node->ns->prefix;
+ }
+
+ if (prefix == NULL) {
+ return 0;
+ }
+
+ if (!xmlStrcmp(prefix, name)) {
return 1;
}
if (node->ns) {
if (node->parent->ns) {
if (!xmlStrcmp(node->ns->href, node->parent->ns->href)) {
- goto next_iter;
+ goto this_iter;
}
}
goto next_iter;
}
}
+this_iter:
if (!xmlStrcmp(node->name, name)) {
APPEND_PREV_ELEMENT(counter, value);