Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- PropertyFilter.cs
- SelectionItemPattern.cs
- SelfIssuedSamlTokenFactory.cs
- MemoryResponseElement.cs
- ImageFormatConverter.cs
- ImportContext.cs
- OleDbException.cs
- VsPropertyGrid.cs
- XmlRawWriter.cs
- ListView.cs
- TypedDatasetGenerator.cs
- WasEndpointConfigContainer.cs
- ValidationSummary.cs
- ImageMapEventArgs.cs
- CopyCodeAction.cs
- SessionEndingCancelEventArgs.cs
- DiscoveryMessageSequence.cs
- _ChunkParse.cs
- ChildTable.cs
- Error.cs
- XsltQilFactory.cs
- TextSegment.cs
- ClonableStack.cs
- ReflectPropertyDescriptor.cs
- XsdCachingReader.cs
- WebResourceUtil.cs
- SplitContainerDesigner.cs
- CommonProperties.cs
- QueryResult.cs
- CLRBindingWorker.cs
- HttpProfileGroupBase.cs
- StringUtil.cs
- DescriptionAttribute.cs
- Marshal.cs
- SimpleLine.cs
- compensatingcollection.cs
- GridToolTip.cs
- ACL.cs
- _NestedMultipleAsyncResult.cs
- XmlRootAttribute.cs
- Int32KeyFrameCollection.cs
- ColumnPropertiesGroup.cs
- EndPoint.cs
- TTSEngineTypes.cs
- Assembly.cs
- TypeTypeConverter.cs
- HtmlTextViewAdapter.cs
- XmlSchemaSimpleType.cs
- WebBrowserDocumentCompletedEventHandler.cs
- DelegateInArgument.cs
- TemplatedMailWebEventProvider.cs
- RangeValidator.cs
- DoubleCollectionValueSerializer.cs
- FrameworkContentElementAutomationPeer.cs
- TypeToStringValueConverter.cs
- ArglessEventHandlerProxy.cs
- DispatcherHookEventArgs.cs
- CaseInsensitiveComparer.cs
- UIElementHelper.cs
- InteropTrackingRecord.cs
- OracleConnectionFactory.cs
- TemplateGroupCollection.cs
- DLinqTableProvider.cs
- HMACSHA512.cs
- SqlCharStream.cs
- Html32TextWriter.cs
- NavigateEvent.cs
- DeobfuscatingStream.cs
- SubstitutionResponseElement.cs
- QueryOpeningEnumerator.cs
- CodeDOMProvider.cs
- CalendarDay.cs
- InvalidCastException.cs
- ServiceMemoryGates.cs
- XhtmlBasicCommandAdapter.cs
- FixedSOMTable.cs
- TableAdapterManagerNameHandler.cs
- MessageBox.cs
- XmlCharType.cs
- OperationResponse.cs
- CollectionMarkupSerializer.cs
- SignatureHelper.cs
- RepeaterItemEventArgs.cs
- SizeValueSerializer.cs
- HierarchicalDataTemplate.cs
- WeakHashtable.cs
- metadatamappinghashervisitor.cs
- FormViewPagerRow.cs
- RoutedUICommand.cs
- ProfileSettings.cs
- SafeCloseHandleCritical.cs
- SystemMulticastIPAddressInformation.cs
- TypedDataSetSchemaImporterExtension.cs
- documentsequencetextpointer.cs
- ToolTip.cs
- HostExecutionContextManager.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- UIElement.cs
- TypedTableHandler.cs
- ValueQuery.cs