The Labs \ Source Viewer \ SSCLI \ System.Xml.Schema \ XmlSchemaAny

  1. //------------------------------------------------------------------------------
  2. // <copyright file="XmlSchemaAny.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. // <owner current="true" primary="true">priyal</owner>
  15. //------------------------------------------------------------------------------
  16. namespace System.Xml.Schema
  17. {
  18.    
  19.     using System.ComponentModel;
  20.     using System.Xml.Serialization;
  21.     using System.Text;
  22.    
  23.     /// <include file='doc\XmlSchemaAny.uex' path='docs/doc[@for="XmlSchemaAny"]/*' />
  24.     /// <devdoc>
  25.     /// <para>[To be supplied.]</para>
  26.     /// </devdoc>
  27.     public class XmlSchemaAny : XmlSchemaParticle
  28.     {
  29.         string ns;
  30.         XmlSchemaContentProcessing processContents = XmlSchemaContentProcessing.None;
  31.         NamespaceList namespaceList;
  32.        
  33.         /// <include file='doc\XmlSchemaAny.uex' path='docs/doc[@for="XmlSchemaAny.Namespaces"]/*' />
  34.         /// <devdoc>
  35.         /// <para>[To be supplied.]</para>
  36.         /// </devdoc>
  37.         [XmlAttribute("namespace")]
  38.         public string Namespace {
  39.             get { return ns; }
  40.             set { ns = value; }
  41.         }
  42.        
  43.         /// <include file='doc\XmlSchemaAny.uex' path='docs/doc[@for="XmlSchemaAny.ProcessContents"]/*' />
  44.         /// <devdoc>
  45.         /// <para>[To be supplied.]</para>
  46.         /// </devdoc>
  47.         [XmlAttribute("processContents"), DefaultValue(XmlSchemaContentProcessing.None)]
  48.         public XmlSchemaContentProcessing ProcessContents {
  49.             get { return processContents; }
  50.             set { processContents = value; }
  51.         }
  52.        
  53.         [XmlIgnore()]
  54.         internal NamespaceList NamespaceList {
  55.             get { return namespaceList; }
  56.         }
  57.        
  58.         [XmlIgnore()]
  59.         internal string ResolvedNamespace {
  60.             get {
  61.                 if (ns == null || ns.Length == 0) {
  62.                     return "##any";
  63.                 }
  64.                 return ns;
  65.             }
  66.         }
  67.        
  68.         [XmlIgnore()]
  69.         internal XmlSchemaContentProcessing ProcessContentsCorrect {
  70.             get { return processContents == XmlSchemaContentProcessing.None ? XmlSchemaContentProcessing.Strict : processContents; }
  71.         }
  72.        
  73.         internal override string NameString {
  74.             get {
  75.                 switch (namespaceList.Type) {
  76.                     case NamespaceList.ListType.Any:
  77.                         return "##any:*";
  78.                     case NamespaceList.ListType.Other:
  79.                        
  80.                         return "##other:*";
  81.                     case NamespaceList.ListType.Set:
  82.                        
  83.                         StringBuilder sb = new StringBuilder();
  84.                         int i = 1;
  85.                         foreach (string wildcardNS in namespaceList.Enumerate) {
  86.                             sb.Append(wildcardNS + ":*");
  87.                             if (i < namespaceList.Enumerate.Count) {
  88.                                 sb.Append(" ");
  89.                             }
  90.                             i++;
  91.                         }
  92.                         return sb.ToString();
  93.                     default:
  94.                        
  95.                         return string.Empty;
  96.                 }
  97.             }
  98.         }
  99.        
  100.         internal void BuildNamespaceList(string targetNamespace)
  101.         {
  102.             if (ns != null) {
  103.                 //If namespace="" default to namespace="##any"
  104.                 namespaceList = new NamespaceList(ns, targetNamespace);
  105.             }
  106.             else {
  107.                 namespaceList = new NamespaceList();
  108.             }
  109.         }
  110.        
  111.         internal void BuildNamespaceListV1Compat(string targetNamespace)
  112.         {
  113.             if (ns != null) {
  114.                 namespaceList = new NamespaceListV1Compat(ns, targetNamespace);
  115.             }
  116.             else {
  117.                 namespaceList = new NamespaceList();
  118.                 //This is only ##any, hence base class is sufficient
  119.             }
  120.         }
  121.        
  122.         internal bool Allows(XmlQualifiedName qname)
  123.         {
  124.             return namespaceList.Allows(qname.Namespace);
  125.         }
  126.        
  127.     }
  128.    
  129. }

Developer Fusion