Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / OutputScopeManager.cs / 1 / OutputScopeManager.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Globalization;
using System.Diagnostics;
using System.Xml;
internal class OutputScopeManager {
private const int STACK_INCREMENT = 10;
private HWStack elementScopesStack;
private string defaultNS;
private OutKeywords atoms;
private XmlNameTable nameTable;
private int prefixIndex;
internal string DefaultNamespace {
get { return this.defaultNS; }
}
internal OutputScope CurrentElementScope {
get {
Debug.Assert(this.elementScopesStack.Peek() != null); // We adding rootElementScope to garantee this
return (OutputScope) this.elementScopesStack.Peek();
}
}
internal XmlSpace XmlSpace {
get { return CurrentElementScope.Space; }
}
internal string XmlLang {
get { return CurrentElementScope.Lang; }
}
internal OutputScopeManager(XmlNameTable nameTable, OutKeywords atoms) {
Debug.Assert(nameTable != null);
Debug.Assert(atoms != null);
this.elementScopesStack = new HWStack(STACK_INCREMENT);
this.nameTable = nameTable;
this.atoms = atoms;
this.defaultNS = this.atoms.Empty;
// We always adding rootElementScope to garantee that CurrentElementScope != null
// This context is active between PI and first element for example
OutputScope rootElementScope = (OutputScope) this.elementScopesStack.Push();
if(rootElementScope == null) {
rootElementScope = new OutputScope();
this.elementScopesStack.AddToTop(rootElementScope);
}
rootElementScope.Init(string.Empty, string.Empty, string.Empty, /*space:*/XmlSpace.None, /*lang:*/string.Empty, /*mixed:*/false);
}
internal void PushNamespace(string prefix, string nspace) {
Debug.Assert(prefix != null);
Debug.Assert(nspace != null);
CurrentElementScope.AddNamespace(prefix, nspace, this.defaultNS);
if (prefix == null || prefix.Length == 0) {
this.defaultNS = nspace;
}
}
internal void PushScope(string name, string nspace, string prefix) {
Debug.Assert(name != null);
Debug.Assert(nspace != null);
Debug.Assert(prefix != null);
OutputScope parentScope = CurrentElementScope;
OutputScope elementScope = (OutputScope) this.elementScopesStack.Push();
if (elementScope == null) {
elementScope = new OutputScope();
this.elementScopesStack.AddToTop(elementScope);
}
Debug.Assert(elementScope != null);
elementScope.Init(name, nspace, prefix, parentScope.Space, parentScope.Lang, parentScope.Mixed);
}
internal void PopScope() {
OutputScope elementScope = (OutputScope) this.elementScopesStack.Pop();
Debug.Assert(elementScope != null); // We adding rootElementScope to garantee this
for (NamespaceDecl scope = elementScope.Scopes; scope != null; scope = scope.Next) {
this.defaultNS = scope.PrevDefaultNsUri;
}
}
internal string ResolveNamespace(string prefix) {
bool thisScope;
return ResolveNamespace(prefix, out thisScope);
}
internal string ResolveNamespace(string prefix, out bool thisScope) {
Debug.Assert(prefix != null);
thisScope = true;
if (prefix == null || prefix.Length == 0) {
return this.defaultNS;
}
else {
if (Keywords.Equals(prefix, this.atoms.Xml)) {
return this.atoms.XmlNamespace;
}
else if (Keywords.Equals(prefix, this.atoms.Xmlns)) {
return this.atoms.XmlnsNamespace;
}
for (int i = this.elementScopesStack.Length - 1; i >= 0; i --) {
Debug.Assert(this.elementScopesStack[i] is OutputScope);
OutputScope elementScope = (OutputScope) this.elementScopesStack[i];
string nspace = elementScope.ResolveAtom(prefix);
if (nspace != null) {
thisScope = (i == this.elementScopesStack.Length - 1);
return nspace;
}
}
}
return null;
}
internal bool FindPrefix(string nspace, out string prefix) {
Debug.Assert(nspace != null);
for (int i = this.elementScopesStack.Length - 1; 0 <= i; i--) {
Debug.Assert(this.elementScopesStack[i] is OutputScope);
OutputScope elementScope = (OutputScope) this.elementScopesStack[i];
string pfx = null;
if (elementScope.FindPrefix(nspace, out pfx)) {
string testNspace = ResolveNamespace(pfx);
if(testNspace != null && Keywords.Equals(testNspace, nspace)) {
prefix = pfx;
return true;
}
else {
break;
}
}
}
prefix = null;
return false;
}
internal string GeneratePrefix(string format) {
string prefix;
do {
prefix = String.Format(CultureInfo.InvariantCulture, format, this.prefixIndex ++);
}while(this.nameTable.Get(prefix) != null);
return this.nameTable.Add(prefix);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace System.Xml.Xsl.XsltOld {
using Res = System.Xml.Utils.Res;
using System;
using System.Globalization;
using System.Diagnostics;
using System.Xml;
internal class OutputScopeManager {
private const int STACK_INCREMENT = 10;
private HWStack elementScopesStack;
private string defaultNS;
private OutKeywords atoms;
private XmlNameTable nameTable;
private int prefixIndex;
internal string DefaultNamespace {
get { return this.defaultNS; }
}
internal OutputScope CurrentElementScope {
get {
Debug.Assert(this.elementScopesStack.Peek() != null); // We adding rootElementScope to garantee this
return (OutputScope) this.elementScopesStack.Peek();
}
}
internal XmlSpace XmlSpace {
get { return CurrentElementScope.Space; }
}
internal string XmlLang {
get { return CurrentElementScope.Lang; }
}
internal OutputScopeManager(XmlNameTable nameTable, OutKeywords atoms) {
Debug.Assert(nameTable != null);
Debug.Assert(atoms != null);
this.elementScopesStack = new HWStack(STACK_INCREMENT);
this.nameTable = nameTable;
this.atoms = atoms;
this.defaultNS = this.atoms.Empty;
// We always adding rootElementScope to garantee that CurrentElementScope != null
// This context is active between PI and first element for example
OutputScope rootElementScope = (OutputScope) this.elementScopesStack.Push();
if(rootElementScope == null) {
rootElementScope = new OutputScope();
this.elementScopesStack.AddToTop(rootElementScope);
}
rootElementScope.Init(string.Empty, string.Empty, string.Empty, /*space:*/XmlSpace.None, /*lang:*/string.Empty, /*mixed:*/false);
}
internal void PushNamespace(string prefix, string nspace) {
Debug.Assert(prefix != null);
Debug.Assert(nspace != null);
CurrentElementScope.AddNamespace(prefix, nspace, this.defaultNS);
if (prefix == null || prefix.Length == 0) {
this.defaultNS = nspace;
}
}
internal void PushScope(string name, string nspace, string prefix) {
Debug.Assert(name != null);
Debug.Assert(nspace != null);
Debug.Assert(prefix != null);
OutputScope parentScope = CurrentElementScope;
OutputScope elementScope = (OutputScope) this.elementScopesStack.Push();
if (elementScope == null) {
elementScope = new OutputScope();
this.elementScopesStack.AddToTop(elementScope);
}
Debug.Assert(elementScope != null);
elementScope.Init(name, nspace, prefix, parentScope.Space, parentScope.Lang, parentScope.Mixed);
}
internal void PopScope() {
OutputScope elementScope = (OutputScope) this.elementScopesStack.Pop();
Debug.Assert(elementScope != null); // We adding rootElementScope to garantee this
for (NamespaceDecl scope = elementScope.Scopes; scope != null; scope = scope.Next) {
this.defaultNS = scope.PrevDefaultNsUri;
}
}
internal string ResolveNamespace(string prefix) {
bool thisScope;
return ResolveNamespace(prefix, out thisScope);
}
internal string ResolveNamespace(string prefix, out bool thisScope) {
Debug.Assert(prefix != null);
thisScope = true;
if (prefix == null || prefix.Length == 0) {
return this.defaultNS;
}
else {
if (Keywords.Equals(prefix, this.atoms.Xml)) {
return this.atoms.XmlNamespace;
}
else if (Keywords.Equals(prefix, this.atoms.Xmlns)) {
return this.atoms.XmlnsNamespace;
}
for (int i = this.elementScopesStack.Length - 1; i >= 0; i --) {
Debug.Assert(this.elementScopesStack[i] is OutputScope);
OutputScope elementScope = (OutputScope) this.elementScopesStack[i];
string nspace = elementScope.ResolveAtom(prefix);
if (nspace != null) {
thisScope = (i == this.elementScopesStack.Length - 1);
return nspace;
}
}
}
return null;
}
internal bool FindPrefix(string nspace, out string prefix) {
Debug.Assert(nspace != null);
for (int i = this.elementScopesStack.Length - 1; 0 <= i; i--) {
Debug.Assert(this.elementScopesStack[i] is OutputScope);
OutputScope elementScope = (OutputScope) this.elementScopesStack[i];
string pfx = null;
if (elementScope.FindPrefix(nspace, out pfx)) {
string testNspace = ResolveNamespace(pfx);
if(testNspace != null && Keywords.Equals(testNspace, nspace)) {
prefix = pfx;
return true;
}
else {
break;
}
}
}
prefix = null;
return false;
}
internal string GeneratePrefix(string format) {
string prefix;
do {
prefix = String.Format(CultureInfo.InvariantCulture, format, this.prefixIndex ++);
}while(this.nameTable.Get(prefix) != null);
return this.nameTable.Add(prefix);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BasicAsyncResult.cs
- CharUnicodeInfo.cs
- ComponentChangedEvent.cs
- Color.cs
- EncoderParameter.cs
- dsa.cs
- StylusLogic.cs
- ScalarRestriction.cs
- VSWCFServiceContractGenerator.cs
- ArrayConverter.cs
- LayoutTableCell.cs
- OracleInternalConnection.cs
- RadialGradientBrush.cs
- InvalidPrinterException.cs
- DataGridRelationshipRow.cs
- LambdaCompiler.Unary.cs
- Int32Storage.cs
- HTTPNotFoundHandler.cs
- SetterBase.cs
- Trace.cs
- Label.cs
- CodeGroup.cs
- XmlNavigatorStack.cs
- ClaimComparer.cs
- ThumbButtonInfo.cs
- TypeDescriptorFilterService.cs
- CompilerParameters.cs
- FileDialogPermission.cs
- ListSortDescriptionCollection.cs
- WindowsScroll.cs
- StrongNameKeyPair.cs
- ProfileSection.cs
- BulletedListEventArgs.cs
- RoleManagerEventArgs.cs
- CompatibleComparer.cs
- ArraySortHelper.cs
- ExtenderProvidedPropertyAttribute.cs
- StorageEndPropertyMapping.cs
- KeyGesture.cs
- ValidateNames.cs
- PersonalizablePropertyEntry.cs
- EventHandlerService.cs
- RuleRefElement.cs
- XmlText.cs
- DomNameTable.cs
- StorageBasedPackageProperties.cs
- HostingPreferredMapPath.cs
- GeneralTransform3DTo2D.cs
- StateMachine.cs
- x509store.cs
- CompilerParameters.cs
- KeyInfo.cs
- SqlClientFactory.cs
- SqlDataSourceCommandEventArgs.cs
- BufferedOutputStream.cs
- SerializableAttribute.cs
- ChainOfResponsibility.cs
- TextEmbeddedObject.cs
- DbConnectionOptions.cs
- WmlCalendarAdapter.cs
- ColumnClickEvent.cs
- DataBoundControl.cs
- Logging.cs
- StringInfo.cs
- ByteAnimationUsingKeyFrames.cs
- BamlRecordHelper.cs
- PrintingPermission.cs
- TreeViewImageIndexConverter.cs
- EventEntry.cs
- PropertyGroupDescription.cs
- PersonalizationProviderHelper.cs
- AccessDataSource.cs
- ServicePoint.cs
- AppDomainEvidenceFactory.cs
- SQLGuid.cs
- TempFiles.cs
- ReferencedAssembly.cs
- XmlNodeChangedEventArgs.cs
- TypeValidationEventArgs.cs
- UpdatableGenericsFeature.cs
- EdmSchemaError.cs
- LingerOption.cs
- PenLineJoinValidation.cs
- SafeRightsManagementEnvironmentHandle.cs
- CultureInfoConverter.cs
- _SslSessionsCache.cs
- ControlBuilderAttribute.cs
- BackgroundWorker.cs
- ConditionBrowserDialog.cs
- QuaternionAnimationUsingKeyFrames.cs
- Container.cs
- RegexBoyerMoore.cs
- TemplateBamlTreeBuilder.cs
- RowParagraph.cs
- CompositeScriptReferenceEventArgs.cs
- TypeResolver.cs
- MatrixIndependentAnimationStorage.cs
- LazyInitializer.cs
- ToolStripTextBox.cs
- dataprotectionpermission.cs