Ejemplo n.º 1
0
 public static SchemaNamespaceList Intersection(SchemaNamespaceList o1, SchemaNamespaceList o2) { 
   // This method is only used to figure out if we need to call Union, so
   // we can safely ignore the types ArrayList.
   SchemaNamespaceList nslist = null;
   if (o1.type == ListType.Any) {
     if (o2.type == ListType.Any)
       return null; // result in wildcard
     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 SchemaNamespaceList();
     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;
 }
Ejemplo n.º 2
0
 public static SchemaNamespaceList Union(SchemaNamespaceList o1, SchemaNamespaceList o2) {
   SchemaNamespaceList nslist = null;
   if (o1.type == ListType.Any) {
     nslist = new SchemaNamespaceList();
   }
   else if (o2.type == ListType.Any) {
     nslist = new SchemaNamespaceList();
   }
   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();
     foreach (string ns in o2.set.Keys) {
       nslist.set[ns] = ns;
     }
   }
   else if (o1.type == ListType.Set && o2.type == ListType.Other) {
     if (o1.set.Contains(o2.targetNamespace)) {
       nslist = new SchemaNamespaceList();
     }
   }
   else if (o2.type == ListType.Set && o1.type == ListType.Other) {
     if (o2.set.Contains(o2.targetNamespace)) {
       nslist = new SchemaNamespaceList();
     }
     else {
       nslist = o1.Clone();
     }
   }
   if (o1.types != null) {
     foreach (TypeNode t in o1.types) {
       nslist.AddType(t);
     }
   }
   if (o2.types != null) {
     foreach (TypeNode t in o2.types) {
       nslist.AddType(t);
     }
   }
   return nslist;
 }