1 //------------------------------------------------------------------------------ 2 // <copyright file="SchemaEntity.cs" company="Microsoft"> 3 // Copyright (c) Microsoft Corporation. All rights reserved. 4 // </copyright> 5 // <owner current="true" primary="true">Microsoft</owner> 6 //------------------------------------------------------------------------------ 7 8 namespace System.Xml.Schema { 9 10 using System; 11 using System.Diagnostics; 12 13 internal sealed class SchemaEntity : IDtdEntityInfo { 14 private XmlQualifiedName qname; // Name of entity 15 private String url; // Url for external entity (system id) 16 private String pubid; // Pubid for external entity 17 private String text; // Text for internal entity 18 private XmlQualifiedName ndata = XmlQualifiedName.Empty; // NDATA identifier 19 private int lineNumber; // line number 20 private int linePosition; // character postion 21 private bool isParameter; // parameter entity flag 22 private bool isExternal; // external entity flag 23 private bool parsingInProgress; // whether entity is being parsed (DtdParser infinite recursion check) 24 private bool isDeclaredInExternal; // declared in external markup or not 25 private string baseURI; 26 private string declaredURI; 27 28 // 29 // Constructor 30 // SchemaEntity(XmlQualifiedName qname, bool isParameter)31 internal SchemaEntity(XmlQualifiedName qname, bool isParameter) { 32 this.qname = qname; 33 this.isParameter = isParameter; 34 } 35 36 // 37 // IDtdEntityInfo interface 38 // 39 #region IDtdEntityInfo Members 40 41 string IDtdEntityInfo.Name { 42 get { return this.Name.Name; } 43 } 44 45 bool IDtdEntityInfo.IsExternal { 46 get { return ((SchemaEntity)this).IsExternal;} 47 } 48 49 bool IDtdEntityInfo.IsDeclaredInExternal { 50 get { return this.DeclaredInExternal; } 51 } 52 53 bool IDtdEntityInfo.IsUnparsedEntity { 54 get { return !this.NData.IsEmpty; } 55 } 56 57 bool IDtdEntityInfo.IsParameterEntity { 58 get { return isParameter; } 59 } 60 61 string IDtdEntityInfo.BaseUriString { 62 get { return this.BaseURI; } 63 } 64 65 string IDtdEntityInfo.DeclaredUriString { 66 get { return this.DeclaredURI; } 67 } 68 69 string IDtdEntityInfo.SystemId { 70 get { return this.Url; } 71 } 72 73 string IDtdEntityInfo.PublicId { 74 get { return this.Pubid; } 75 } 76 77 string IDtdEntityInfo.Text { 78 get { return ((SchemaEntity)this).Text; } 79 } 80 81 int IDtdEntityInfo.LineNumber { 82 get { return this.Line; } 83 } 84 85 int IDtdEntityInfo.LinePosition { 86 get { return this.Pos; } 87 } 88 89 #endregion 90 91 // 92 // Internal methods and properties 93 // 94 #if !SILVERLIGHT IsPredefinedEntity(String n)95 internal static bool IsPredefinedEntity(String n) { 96 return(n == "lt" || 97 n == "gt" || 98 n == "amp" || 99 n == "apos" || 100 n == "quot"); 101 } 102 #endif 103 104 internal XmlQualifiedName Name { 105 get { return qname; } 106 } 107 108 internal String Url { 109 get { return url;} 110 set { url = value; isExternal = true;} 111 } 112 113 internal String Pubid { 114 get { return pubid;} 115 set { pubid = value;} 116 } 117 118 internal bool IsExternal { 119 get { return isExternal; } 120 set { isExternal = value; } 121 } 122 123 internal bool DeclaredInExternal { 124 get { return isDeclaredInExternal; } 125 set { isDeclaredInExternal = value; } 126 } 127 128 internal XmlQualifiedName NData { 129 get { return ndata;} 130 set { ndata = value;} 131 } 132 133 internal String Text { 134 get { return text;} 135 set { text = value; isExternal = false;} 136 } 137 138 internal int Line { 139 get { return lineNumber;} 140 set { lineNumber = value;} 141 } 142 143 internal int Pos { 144 get { return linePosition;} 145 set { linePosition = value;} 146 } 147 148 internal String BaseURI { 149 get { return (baseURI == null) ? String.Empty : baseURI; } 150 set { baseURI = value; } 151 } 152 153 internal bool ParsingInProgress { 154 get { return parsingInProgress; } 155 set { parsingInProgress = value; } 156 } 157 158 internal String DeclaredURI { 159 get { return (declaredURI == null) ? String.Empty : declaredURI; } 160 set { declaredURI = value; } 161 } 162 }; 163 164 } 165