Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Xml / System / Xml / XPath / Internal / NamespaceQuery.cs / 1 / 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
- TrackingServices.cs
- PropertyManager.cs
- DragDeltaEventArgs.cs
- CheckBoxRenderer.cs
- NativeRecognizer.cs
- XmlQueryContext.cs
- ListItem.cs
- UpdatePanel.cs
- TypeHelpers.cs
- XNameConverter.cs
- SerialStream.cs
- PropertyTabAttribute.cs
- IPAddress.cs
- HttpCapabilitiesSectionHandler.cs
- DetailsViewActionList.cs
- TopClause.cs
- DeferredSelectedIndexReference.cs
- ObjectDataSourceMethodEventArgs.cs
- ErrorsHelper.cs
- DocumentApplicationState.cs
- _SSPISessionCache.cs
- ToolbarAUtomationPeer.cs
- OracleException.cs
- HtmlInputReset.cs
- TimeoutValidationAttribute.cs
- oledbmetadatacollectionnames.cs
- PageBreakRecord.cs
- LogReserveAndAppendState.cs
- HostingMessageProperty.cs
- SimpleTextLine.cs
- WebBrowserPermission.cs
- StylusButtonCollection.cs
- InternalConfigRoot.cs
- HelpKeywordAttribute.cs
- RankException.cs
- BehaviorEditorPart.cs
- FixedSOMGroup.cs
- Line.cs
- EntityCommandDefinition.cs
- ApplicationInfo.cs
- JournalEntryStack.cs
- ClientOptions.cs
- CodeTypeDelegate.cs
- DataRelation.cs
- CacheMemory.cs
- XmlAutoDetectWriter.cs
- SQLStringStorage.cs
- ReflectionUtil.cs
- ChangeBlockUndoRecord.cs
- DiscoveryExceptionDictionary.cs
- CodeDOMUtility.cs
- PropertyReferenceExtension.cs
- AstTree.cs
- QilNode.cs
- Viewport3DAutomationPeer.cs
- Control.cs
- BuiltInExpr.cs
- ActionItem.cs
- SymLanguageVendor.cs
- ObjectViewListener.cs
- ComponentResourceKeyConverter.cs
- TargetPerspective.cs
- FigureParagraph.cs
- ImageButton.cs
- DbInsertCommandTree.cs
- MemberHolder.cs
- Adorner.cs
- CheckableControlBaseAdapter.cs
- AssemblySettingAttributes.cs
- storepermission.cs
- FontFamilyConverter.cs
- StatusBarAutomationPeer.cs
- SqlVersion.cs
- EntityContainer.cs
- SQLInt64.cs
- RenderTargetBitmap.cs
- ObjectSpanRewriter.cs
- SafeTokenHandle.cs
- ProviderUtil.cs
- ToolBarOverflowPanel.cs
- RuleElement.cs
- SqlXml.cs
- KeyboardNavigation.cs
- SessionEndingCancelEventArgs.cs
- InnerItemCollectionView.cs
- XmlElementAttribute.cs
- ObjectKeyFrameCollection.cs
- ParseNumbers.cs
- AssertUtility.cs
- RoutingExtension.cs
- XmlIlVisitor.cs
- DataListItem.cs
- CurrencyManager.cs
- DetailsViewUpdateEventArgs.cs
- DBCSCodePageEncoding.cs
- ModelMemberCollection.cs
- ToolStripRenderer.cs
- UserControlBuildProvider.cs
- PageAsyncTask.cs
- Soap11ServerProtocol.cs