|
//------------------------------------------------------------------------------
// <copyright file="SchemaEntity.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// <owner current="true" primary="true">Microsoft</owner>
//------------------------------------------------------------------------------
namespace System.Xml.Schema {
using System;
using System.Diagnostics;
internal sealed class SchemaEntity : IDtdEntityInfo {
private XmlQualifiedName qname; // Name of entity
private String url; // Url for external entity (system id)
private String pubid; // Pubid for external entity
private String text; // Text for internal entity
private XmlQualifiedName ndata = XmlQualifiedName.Empty; // NDATA identifier
private int lineNumber; // line number
private int linePosition; // character postion
private bool isParameter; // parameter entity flag
private bool isExternal; // external entity flag
private bool parsingInProgress; // whether entity is being parsed (DtdParser infinite recursion check)
private bool isDeclaredInExternal; // declared in external markup or not
private string baseURI;
private string declaredURI;
//
// Constructor
//
internal SchemaEntity(XmlQualifiedName qname, bool isParameter) {
this.qname = qname;
this.isParameter = isParameter;
}
//
// IDtdEntityInfo interface
//
#region IDtdEntityInfo Members
string IDtdEntityInfo.Name {
get { return this.Name.Name; }
}
bool IDtdEntityInfo.IsExternal {
get { return ((SchemaEntity)this).IsExternal;}
}
bool IDtdEntityInfo.IsDeclaredInExternal {
get { return this.DeclaredInExternal; }
}
bool IDtdEntityInfo.IsUnparsedEntity {
get { return !this.NData.IsEmpty; }
}
bool IDtdEntityInfo.IsParameterEntity {
get { return isParameter; }
}
string IDtdEntityInfo.BaseUriString {
get { return this.BaseURI; }
}
string IDtdEntityInfo.DeclaredUriString {
get { return this.DeclaredURI; }
}
string IDtdEntityInfo.SystemId {
get { return this.Url; }
}
string IDtdEntityInfo.PublicId {
get { return this.Pubid; }
}
string IDtdEntityInfo.Text {
get { return ((SchemaEntity)this).Text; }
}
int IDtdEntityInfo.LineNumber {
get { return this.Line; }
}
int IDtdEntityInfo.LinePosition {
get { return this.Pos; }
}
#endregion
//
// Internal methods and properties
//
#if !SILVERLIGHT
internal static bool IsPredefinedEntity(String n) {
return(n == "lt" ||
n == "gt" ||
n == "amp" ||
n == "apos" ||
n == "quot");
}
#endif
internal XmlQualifiedName Name {
get { return qname; }
}
internal String Url {
get { return url;}
set { url = value; isExternal = true;}
}
internal String Pubid {
get { return pubid;}
set { pubid = value;}
}
internal bool IsExternal {
get { return isExternal; }
set { isExternal = value; }
}
internal bool DeclaredInExternal {
get { return isDeclaredInExternal; }
set { isDeclaredInExternal = value; }
}
internal XmlQualifiedName NData {
get { return ndata;}
set { ndata = value;}
}
internal String Text {
get { return text;}
set { text = value; isExternal = false;}
}
internal int Line {
get { return lineNumber;}
set { lineNumber = value;}
}
internal int Pos {
get { return linePosition;}
set { linePosition = value;}
}
internal String BaseURI {
get { return (baseURI == null) ? String.Empty : baseURI; }
set { baseURI = value; }
}
internal bool ParsingInProgress {
get { return parsingInProgress; }
set { parsingInProgress = value; }
}
internal String DeclaredURI {
get { return (declaredURI == null) ? String.Empty : declaredURI; }
set { declaredURI = value; }
}
};
}
|