public static NamespaceList Intersection(NamespaceList o1, NamespaceList o2)
{
NamespaceList nslist = null;
if (o1.type == ListType.Any)
{
nslist = o2.Clone();
}
else if (o2.type == ListType.Any)
{
nslist = o1.Clone();
}
else if (o1.type == ListType.Other && o2.type == ListType.Other)
{
if (o1.targetNamespace == o2.targetNamespace)
{
nslist = o1.Clone();
}
}
else if (o1.type == ListType.Set && o2.type == ListType.Set)
{
nslist = o1.Clone();
nslist = new NamespaceList();
nslist.type = ListType.Set;
nslist.set = new Hashtable();
foreach (string ns in o1.set.Keys)
{
if (o2.set.Contains(ns))
{
nslist.set.Add(ns, ns);
}
}
}
else if (o1.type == ListType.Set && o2.type == ListType.Other)
{
nslist = o1.Clone();
if (nslist.set[o2.targetNamespace] != null)
{
nslist.set.Remove(o2.targetNamespace);
}
}
else if (o2.type == ListType.Set && o1.type == ListType.Other)
{
nslist = o2.Clone();
if (nslist.set[o1.targetNamespace] != null)
{
nslist.set.Remove(o1.targetNamespace);
}
}
return(nslist);
}