Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / NamespaceQuery.cs / 1305376 / NamespaceQuery.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.XPath; using System.Diagnostics; using System.Globalization; internal sealed class NamespaceQuery : BaseAxisQuery { private bool onNamespace; public NamespaceQuery(Query qyParent, string Name, string Prefix, XPathNodeType Type) : base(qyParent, Name, Prefix, Type) {} private NamespaceQuery(NamespaceQuery other) : base(other) { this.onNamespace = other.onNamespace; } public override void Reset() { onNamespace = false; base.Reset(); } public override XPathNavigator Advance() { while (true) { if (!onNamespace) { currentNode = qyInput.Advance(); if (currentNode == null) { return null; } position = 0; currentNode = currentNode.Clone(); onNamespace = currentNode.MoveToFirstNamespace(); } else { onNamespace = currentNode.MoveToNextNamespace(); } if (onNamespace) { if (matches(currentNode)) { position++; return currentNode; } } } // while } // Advance public override bool matches(XPathNavigator e) { Debug.Assert(e.NodeType == XPathNodeType.Namespace); if (e.Value.Length == 0) { Debug.Assert(e.LocalName.Length == 0, "Only xmlns='' can have empty string as a value"); // Namespace axes never returns xmlns='', // because it's not a NS declaration but rather undeclaration. return false; } if (NameTest) { return Name.Equals(e.LocalName); } else { return true; } } public override XPathNodeIterator Clone() { return new NamespaceQuery(this); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.XPath; using System.Diagnostics; using System.Globalization; internal sealed class NamespaceQuery : BaseAxisQuery { private bool onNamespace; public NamespaceQuery(Query qyParent, string Name, string Prefix, XPathNodeType Type) : base(qyParent, Name, Prefix, Type) {} private NamespaceQuery(NamespaceQuery other) : base(other) { this.onNamespace = other.onNamespace; } public override void Reset() { onNamespace = false; base.Reset(); } public override XPathNavigator Advance() { while (true) { if (!onNamespace) { currentNode = qyInput.Advance(); if (currentNode == null) { return null; } position = 0; currentNode = currentNode.Clone(); onNamespace = currentNode.MoveToFirstNamespace(); } else { onNamespace = currentNode.MoveToNextNamespace(); } if (onNamespace) { if (matches(currentNode)) { position++; return currentNode; } } } // while } // Advance public override bool matches(XPathNavigator e) { Debug.Assert(e.NodeType == XPathNodeType.Namespace); if (e.Value.Length == 0) { Debug.Assert(e.LocalName.Length == 0, "Only xmlns='' can have empty string as a value"); // Namespace axes never returns xmlns='', // because it's not a NS declaration but rather undeclaration. return false; } if (NameTest) { return Name.Equals(e.LocalName); } else { return true; } } public override XPathNodeIterator Clone() { return new NamespaceQuery(this); } } } // 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
- Utils.cs
- keycontainerpermission.cs
- KnownTypeDataContractResolver.cs
- CustomCategoryAttribute.cs
- FlowThrottle.cs
- RegexTree.cs
- SystemIPv4InterfaceProperties.cs
- PageThemeBuildProvider.cs
- GetIndexBinder.cs
- PermissionToken.cs
- FormatterServicesNoSerializableCheck.cs
- TextEffectCollection.cs
- ComEventsInfo.cs
- SqlCommandSet.cs
- OdbcCommandBuilder.cs
- RequestResizeEvent.cs
- TemplateBaseAction.cs
- WebPartTracker.cs
- ColumnHeaderConverter.cs
- ManifestSignedXml.cs
- TreeViewImageKeyConverter.cs
- LZCodec.cs
- HostProtectionException.cs
- XmlLanguage.cs
- FaultImportOptions.cs
- FactoryGenerator.cs
- _RequestCacheProtocol.cs
- AsyncResult.cs
- StateBag.cs
- LambdaCompiler.Statements.cs
- LockRecoveryTask.cs
- Events.cs
- LingerOption.cs
- WeakHashtable.cs
- WindowsUpDown.cs
- DescendentsWalker.cs
- DbConnectionHelper.cs
- XpsSerializerFactory.cs
- WebPartTracker.cs
- PreProcessInputEventArgs.cs
- SoapObjectInfo.cs
- EventListener.cs
- DataGridLength.cs
- Coordinator.cs
- OpenFileDialog.cs
- ContentType.cs
- AbstractSvcMapFileLoader.cs
- AssemblyNameUtility.cs
- DocumentOrderComparer.cs
- InputScopeConverter.cs
- TemplateControlParser.cs
- XmlQueryCardinality.cs
- DataContract.cs
- PathTooLongException.cs
- ToolboxComponentsCreatedEventArgs.cs
- HttpException.cs
- SoapObjectInfo.cs
- AudioStateChangedEventArgs.cs
- xml.cs
- RealProxy.cs
- ScrollItemProviderWrapper.cs
- DecimalAnimation.cs
- Border.cs
- HtmlControl.cs
- LookupTables.cs
- ConfigurationFileMap.cs
- UpnEndpointIdentityExtension.cs
- SingleConverter.cs
- MetabaseServerConfig.cs
- DesignBindingEditor.cs
- input.cs
- Number.cs
- TemplateControlParser.cs
- CultureMapper.cs
- Privilege.cs
- unsafenativemethodsother.cs
- CommandDevice.cs
- ValidationHelper.cs
- TextViewDesigner.cs
- TextBoxRenderer.cs
- HMACMD5.cs
- TableItemProviderWrapper.cs
- DataBoundControlHelper.cs
- DispatcherExceptionEventArgs.cs
- FilterQuery.cs
- StandardCommands.cs
- NonBatchDirectoryCompiler.cs
- SymmetricSecurityProtocol.cs
- SettingsSection.cs
- UnsafePeerToPeerMethods.cs
- IgnoreDataMemberAttribute.cs
- JsonDeserializer.cs
- WebPartUtil.cs
- Expression.cs
- DocumentPageView.cs
- ClipboardData.cs
- SharedMemory.cs
- InheritablePropertyChangeInfo.cs
- JsonXmlDataContract.cs
- ColumnCollectionEditor.cs