Exemple #1
0
Key commonKeyName (Key key1, Key key2)
{
	// do not let removed namespaces escape
	key1 = key1.dup();
	key2 = key2.dup();

	if (key1.isBelowOrSame(key2)) return key2;
	if (key2.isBelowOrSame(key1)) return key1;

	if (key1.getNamespace() != key2.getNamespace())
	{
		removeNamespace(key1);
		removeNamespace(key2);
	}

	Key ret(key1.getNamespace(), KEY_END);
	for (auto it1 = ++key1.begin(), it2 = ++key2.begin();
	     it1 != key1.end() && it2 != key2.end();
	     ++it1, ++it2)
	{
		if (*it1 != *it2) break;
		ret.addBaseName(*it1);
	}
	return ret;

}
Exemple #2
0
void removeDefaultNamespace(xmlNs *ns, xmlNode *node) {
    removeNamespace(&node->nsDef, ns);

    xmlAttr *attr;

    for (attr = node->properties; attr; attr = attr->next) {
        if (!attr->ns)
            continue;

        removeNamespace(&attr->ns, ns);
    }

    if (node->ns == ns)
        node->ns = NULL;

    xmlNode *child;

    for (child = xmlFirstElementChild(node); child; child = xmlNextElementSibling(child)) {
        removeDefaultNamespace(ns, child);
    }
}