public void Compile(string nss, ValidationEventHandler h, XmlSchema schema) { if (SkipCompile) { return; // used by XmlSchemaAny.AnyTypeContent. } Reset(); int nscount = 0; string actualNamespace = nss == null ? "##any" : nss; string[] nslist = XmlSchemaUtil.SplitList(actualNamespace); for (int i = 0; i < nslist.Length; i++) { string ns = nslist [i]; switch (ns) { case "##any": if (HasValueAny) { xsobj.error(h, "Multiple specification of ##any was found."); } nscount |= 1; HasValueAny = true; break; case "##other": if (HasValueOther) { xsobj.error(h, "Multiple specification of ##other was found."); } nscount |= 2; HasValueOther = true; break; case "##targetNamespace": if (HasValueTargetNamespace) { xsobj.error(h, "Multiple specification of ##targetNamespace was found."); } nscount |= 4; HasValueTargetNamespace = true; break; case "##local": if (HasValueLocal) { xsobj.error(h, "Multiple specification of ##local was found."); } nscount |= 8; HasValueLocal = true; break; default: if (!XmlSchemaUtil.CheckAnyUri(ns)) { xsobj.error(h, "the namespace is not a valid anyURI"); } else if (ResolvedNamespaces.Contains(ns)) { xsobj.error(h, "Multiple specification of '" + ns + "' was found."); } else { nscount |= 16; ResolvedNamespaces.Add(ns); } break; } } if ((nscount & 1) == 1 && nscount != 1) { xsobj.error(h, "##any if present must be the only namespace attribute"); } if ((nscount & 2) == 2 && nscount != 2) { xsobj.error(h, "##other if present must be the only namespace attribute"); } }