//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // // Microsoft //------------------------------------------------------------------------------ namespace System.Xml.Schema { using System.ComponentModel; using System.Xml.Serialization; using System.Text; /// /// /// [To be supplied.] /// public class XmlSchemaAny : XmlSchemaParticle { string ns; XmlSchemaContentProcessing processContents = XmlSchemaContentProcessing.None; NamespaceList namespaceList; /// /// /// [To be supplied.] /// [XmlAttribute("namespace")] public string Namespace { get { return ns; } set { ns = value; } } /// /// /// [To be supplied.] /// [XmlAttribute("processContents"), DefaultValue(XmlSchemaContentProcessing.None)] public XmlSchemaContentProcessing ProcessContents { get { return processContents; } set { processContents = value; } } [XmlIgnore] internal NamespaceList NamespaceList { get { return namespaceList; } } [XmlIgnore] internal string ResolvedNamespace { get { if (ns == null || ns.Length == 0) { return "##any"; } return ns; } } [XmlIgnore] internal XmlSchemaContentProcessing ProcessContentsCorrect { get { return processContents == XmlSchemaContentProcessing.None ? XmlSchemaContentProcessing.Strict : processContents; } } internal override string NameString { get { switch (namespaceList.Type) { case NamespaceList.ListType.Any: return "##any:*"; case NamespaceList.ListType.Other: return "##other:*"; case NamespaceList.ListType.Set: StringBuilder sb = new StringBuilder(); int i = 1; foreach(string wildcardNS in namespaceList.Enumerate) { sb.Append(wildcardNS + ":*"); if (i < namespaceList.Enumerate.Count) { sb.Append(" "); } i++; } return sb.ToString(); default: return string.Empty; } } } internal void BuildNamespaceList(string targetNamespace) { if (ns != null) { //If namespace="" default to namespace="##any" namespaceList = new NamespaceList(ns, targetNamespace); } else { namespaceList = new NamespaceList(); } } internal void BuildNamespaceListV1Compat(string targetNamespace) { if (ns != null) { namespaceList = new NamespaceListV1Compat(ns, targetNamespace); } else { namespaceList = new NamespaceList(); //This is only ##any, hence base class is sufficient } } internal bool Allows(XmlQualifiedName qname) { return namespaceList.Allows(qname.Namespace); } } }