findAncestorNs function
List<XmlNamespace>
findAncestorNs(
- XmlDocument doc,
- String docSubsetXpath, [
- dynamic namespaceResolver
Implementation
List<XmlNamespace> findAncestorNs(XmlDocument doc, String docSubsetXpath,
[namespaceResolver]) {
final docSubset = XmlXPath.node(doc)
.query(docSubsetXpath); // FIXME: supports namespaceResolver
final result = docSubset.node;
if (result == null) {
return [];
}
final node = result.node;
final ancestorNs = _collectAncestorNamespaces(node);
final ancestorNsWithoutDuplicate = <XmlNamespace>[];
for (final ns in ancestorNs) {
var notOnTheList = true;
for (final ns2 in ancestorNsWithoutDuplicate) {
if (ns2.prefix == ns.prefix) {
notOnTheList = false;
break;
}
}
if (notOnTheList) {
ancestorNsWithoutDuplicate.add(ns);
}
}
final returningNs = <XmlNamespace>[];
final subsetNsPrefix = _findNSPrefix(node);
for (var ancestorNs in ancestorNsWithoutDuplicate) {
if (ancestorNs.prefix != subsetNsPrefix) {
returningNs.add(ancestorNs);
}
}
return returningNs;
}