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
- NullExtension.cs
- PrimitiveXmlSerializers.cs
- TypeUnloadedException.cs
- WinCategoryAttribute.cs
- StorageMappingItemCollection.cs
- SemanticValue.cs
- SelectedDatesCollection.cs
- MultipleViewPattern.cs
- WindowsFont.cs
- SchemaDeclBase.cs
- StringUtil.cs
- BindValidationContext.cs
- ListBoxItemWrapperAutomationPeer.cs
- DefaultTextStore.cs
- MimeImporter.cs
- ControlParser.cs
- DataQuery.cs
- ViewStateException.cs
- SiteMapNodeItem.cs
- DataTableNewRowEvent.cs
- PageCatalogPartDesigner.cs
- CodeTypeDelegate.cs
- XamlToRtfWriter.cs
- FileVersion.cs
- StringResourceManager.cs
- HttpRuntimeSection.cs
- WindowsUpDown.cs
- PropertyInfoSet.cs
- Pts.cs
- ElementUtil.cs
- MenuScrollingVisibilityConverter.cs
- CategoryGridEntry.cs
- ResourceBinder.cs
- EntityKeyElement.cs
- Property.cs
- MaskedTextBox.cs
- XmlAnyElementAttributes.cs
- WmlCommandAdapter.cs
- StructuredProperty.cs
- HybridObjectCache.cs
- CollectionTraceRecord.cs
- XmlNamespaceManager.cs
- DomNameTable.cs
- HebrewNumber.cs
- DataGridViewCellConverter.cs
- SetIndexBinder.cs
- FixedHyperLink.cs
- CompilerErrorCollection.cs
- InplaceBitmapMetadataWriter.cs
- DbRetry.cs
- _SingleItemRequestCache.cs
- DataRecord.cs
- ExpressionNode.cs
- Splitter.cs
- CodeArrayIndexerExpression.cs
- WizardForm.cs
- CodeLinePragma.cs
- SchemaImporterExtensionElementCollection.cs
- HttpSysSettings.cs
- CompositeActivityTypeDescriptorProvider.cs
- InfoCardProofToken.cs
- DataGridAutoFormatDialog.cs
- SqlServer2KCompatibilityCheck.cs
- RSAPKCS1KeyExchangeFormatter.cs
- ParagraphVisual.cs
- ServiceOperationListItem.cs
- XPathNode.cs
- MetadataArtifactLoaderResource.cs
- ConnectionsZone.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- OpenTypeCommon.cs
- WindowsAuthenticationEventArgs.cs
- Image.cs
- _NetworkingPerfCounters.cs
- Delegate.cs
- XmlSortKey.cs
- KeyPressEvent.cs
- NoClickablePointException.cs
- BitmapSourceSafeMILHandle.cs
- ContextMenuStripGroupCollection.cs
- WebControlAdapter.cs
- __Filters.cs
- ImmComposition.cs
- TablePattern.cs
- TextSchema.cs
- TypeSystem.cs
- DrawingServices.cs
- MessageEnumerator.cs
- RegisteredDisposeScript.cs
- ActivityCompletionCallbackWrapper.cs
- ActiveXSerializer.cs
- ViewCellRelation.cs
- BitmapVisualManager.cs
- SubMenuStyleCollection.cs
- DocumentViewerHelper.cs
- ArgumentException.cs
- GestureRecognizer.cs
- UndoUnit.cs
- Pair.cs
- ScriptingProfileServiceSection.cs