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

  1. //------------------------------------------------------------------------------
  2. // <copyright file="SchemaAttDef.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.Diagnostics;
  20.    
  21. /*
  22.     * This class describes an attribute type and potential values.
  23.     * This encapsulates the information for one Attdef * in an
  24.     * Attlist in a DTD as described below:
  25.     */   
  26.     internal sealed class SchemaAttDef : SchemaDeclBase
  27.     {
  28.         public enum Reserve
  29.         {
  30.             None,
  31.             XmlSpace,
  32.             XmlLang
  33.         }
  34.        
  35.         private Reserve reserved;
  36.         // indicate the attribute type, such as xml:lang or xml:space
  37.         private string defExpanded;
  38.         // default value in its expanded form
  39.         private bool hasEntityRef;
  40.         // whether there is any entity reference in the default value
  41.         XmlSchemaAttribute schemaAttribute;
  42.        
  43.         private bool defaultValueChecked;
  44.        
  45.         int lineNum;
  46.         int linePos;
  47.         int valueLineNum;
  48.         int valueLinePos;
  49.        
  50.         public static readonly SchemaAttDef Empty = new SchemaAttDef();
  51.        
  52.         public SchemaAttDef(XmlQualifiedName name, string prefix) : base(name, prefix)
  53.         {
  54.             reserved = Reserve.None;
  55.         }
  56.        
  57.         private SchemaAttDef()
  58.         {
  59.         }
  60.        
  61.         public SchemaAttDef Clone()
  62.         {
  63.             return (SchemaAttDef)MemberwiseClone();
  64.         }
  65.        
  66.         internal int LinePos {
  67.             get { return linePos; }
  68.             set { linePos = value; }
  69.         }
  70.        
  71.         internal int LineNum {
  72.             get { return lineNum; }
  73.             set { lineNum = value; }
  74.         }
  75.        
  76.         internal int ValueLinePos {
  77.             get { return valueLinePos; }
  78.             set { valueLinePos = value; }
  79.         }
  80.        
  81.         internal int ValueLineNum {
  82.             get { return valueLineNum; }
  83.             set { valueLineNum = value; }
  84.         }
  85.        
  86.         internal bool DefaultValueChecked {
  87.             get { return defaultValueChecked; }
  88.         }
  89.        
  90.         public string DefaultValueExpanded {
  91.             get { return (defExpanded != null) ? defExpanded : String.Empty; }
  92.             set { defExpanded = value; }
  93.         }
  94.        
  95.         public Reserve Reserved {
  96.             get { return reserved; }
  97.             set { reserved = value; }
  98.         }
  99.        
  100.         public bool HasEntityRef {
  101.             get { return hasEntityRef; }
  102.             set { hasEntityRef = value; }
  103.         }
  104.        
  105.         public XmlSchemaAttribute SchemaAttribute {
  106.             get { return schemaAttribute; }
  107.             set { schemaAttribute = value; }
  108.         }
  109.        
  110.         public void CheckXmlSpace(ValidationEventHandler eventhandler)
  111.         {
  112.             if (datatype.TokenizedType == XmlTokenizedType.ENUMERATION && (values != null) && (values.Count <= 2)) {
  113.                 string s1 = values[0].ToString();
  114.                
  115.                 if (values.Count == 2) {
  116.                     string s2 = values[1].ToString();
  117.                    
  118.                     if ((s1 == "default" || s2 == "default") && (s1 == "preserve" || s2 == "preserve")) {
  119.                         return;
  120.                     }
  121.                 }
  122.                 else {
  123.                     if (s1 == "default" || s1 == "preserve") {
  124.                         return;
  125.                     }
  126.                 }
  127.             }
  128.             eventhandler(this, new ValidationEventArgs(new XmlSchemaException(Res.Sch_XmlSpace, string.Empty)));
  129.         }
  130.        
  131.         internal void CheckDefaultValue(SchemaInfo schemaInfo, IDtdParserAdapter readerAdapter)
  132.         {
  133.             DtdValidator.CheckDefaultValue(this, schemaInfo, readerAdapter);
  134.             defaultValueChecked = true;
  135.         }
  136.     }
  137. }

Developer Fusion