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
- SplitContainerDesigner.cs
- AspCompat.cs
- PreservationFileWriter.cs
- WeakReferenceKey.cs
- TriggerActionCollection.cs
- DataKeyArray.cs
- SafeMILHandle.cs
- FileAccessException.cs
- SafeArrayTypeMismatchException.cs
- PersonalizableTypeEntry.cs
- OracleConnectionStringBuilder.cs
- DispatcherFrame.cs
- SmtpAuthenticationManager.cs
- RuntimeComponentFilter.cs
- PropagatorResult.cs
- DoubleAnimationClockResource.cs
- WsdlInspector.cs
- Schema.cs
- XmlSchemaSimpleTypeList.cs
- DataGridTextBoxColumn.cs
- BamlLocalizableResourceKey.cs
- SignedXml.cs
- AssociationTypeEmitter.cs
- Method.cs
- NegotiationTokenAuthenticator.cs
- XmlSchemaChoice.cs
- TableLayoutColumnStyleCollection.cs
- TabPanel.cs
- ToolStripProgressBar.cs
- EventToken.cs
- HtmlTableRow.cs
- mansign.cs
- DiscoveryViaBehavior.cs
- TypeSource.cs
- Normalization.cs
- RawStylusInputCustomDataList.cs
- CategoryGridEntry.cs
- XmlDataLoader.cs
- TypedRowGenerator.cs
- CodeSnippetTypeMember.cs
- CodeDomExtensionMethods.cs
- AuthenticatedStream.cs
- DeclaredTypeValidatorAttribute.cs
- DiscoveryOperationContextExtension.cs
- wgx_sdk_version.cs
- JsonXmlDataContract.cs
- Queue.cs
- DataGridTextBoxColumn.cs
- Rfc2898DeriveBytes.cs
- SimpleBitVector32.cs
- SchemaNames.cs
- InvalidProgramException.cs
- _UriSyntax.cs
- WebPartZone.cs
- BitmapEffectInputData.cs
- PointAnimationUsingKeyFrames.cs
- Permission.cs
- ReliableInputConnection.cs
- SortQuery.cs
- JavaScriptObjectDeserializer.cs
- WsdlServiceChannelBuilder.cs
- EntityParameterCollection.cs
- ProxySimple.cs
- shaperfactoryquerycachekey.cs
- Dispatcher.cs
- SqlGenericUtil.cs
- input.cs
- LogWriteRestartAreaState.cs
- MatchingStyle.cs
- ToolStrip.cs
- BrushMappingModeValidation.cs
- Event.cs
- SplitContainer.cs
- BrushMappingModeValidation.cs
- OdbcConnectionPoolProviderInfo.cs
- SelectionManager.cs
- TargetParameterCountException.cs
- AnnotationResource.cs
- EntityContainerRelationshipSet.cs
- PropertyDescriptorGridEntry.cs
- Operator.cs
- ConnectionPoint.cs
- FilterQuery.cs
- TreeViewHitTestInfo.cs
- WindowInteractionStateTracker.cs
- BufferedWebEventProvider.cs
- AttributeEmitter.cs
- WebPartAuthorizationEventArgs.cs
- GlobalDataBindingHandler.cs
- Int32Converter.cs
- HttpsTransportBindingElement.cs
- SqlDataReader.cs
- InstallerTypeAttribute.cs
- AuthenticodeSignatureInformation.cs
- IDictionary.cs
- DrawingServices.cs
- SortKey.cs
- XmlSchemaSimpleType.cs
- BindValidationContext.cs
- OutputWindow.cs