Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- entityreference_tresulttype.cs
- IntSecurity.cs
- ProtocolsConfigurationEntry.cs
- HebrewCalendar.cs
- GlobalEventManager.cs
- ScalarType.cs
- DefaultMergeHelper.cs
- AssertSection.cs
- WeakRefEnumerator.cs
- PostBackOptions.cs
- NamespaceDecl.cs
- TextFragmentEngine.cs
- GradientSpreadMethodValidation.cs
- HtmlHead.cs
- Array.cs
- SecurityTokenException.cs
- FreezableDefaultValueFactory.cs
- SecurityTokenResolver.cs
- WebPartConnectionsConfigureVerb.cs
- ObjectPersistData.cs
- ToolStripPanelSelectionBehavior.cs
- BaseHashHelper.cs
- LogicalTreeHelper.cs
- IIS7WorkerRequest.cs
- ServicePoint.cs
- GridItem.cs
- BindingContext.cs
- SiteMap.cs
- PolyLineSegment.cs
- XmlSchemaComplexContent.cs
- AppDomainShutdownMonitor.cs
- HttpHandlerActionCollection.cs
- MetafileHeader.cs
- QueryLifecycle.cs
- XmlNodeChangedEventManager.cs
- TokenBasedSet.cs
- ScrollBarRenderer.cs
- SystemBrushes.cs
- BufferAllocator.cs
- RunInstallerAttribute.cs
- NativeActivity.cs
- SessionEndedEventArgs.cs
- SafeNativeMethods.cs
- IPGlobalProperties.cs
- ComEventsMethod.cs
- IntegerValidator.cs
- SoapFormatter.cs
- Pen.cs
- IndexOutOfRangeException.cs
- TrustManagerPromptUI.cs
- MultipleViewPattern.cs
- CqlLexer.cs
- BindingExpressionUncommonField.cs
- PixelFormatConverter.cs
- Emitter.cs
- FamilyTypeface.cs
- ComplexType.cs
- Visual3D.cs
- ResourceDefaultValueAttribute.cs
- FragmentNavigationEventArgs.cs
- ObjectDataSourceMethodEventArgs.cs
- ErrorLog.cs
- Size.cs
- Package.cs
- ISCIIEncoding.cs
- HtmlControl.cs
- QilFunction.cs
- TextWriter.cs
- InvalidAsynchronousStateException.cs
- SqlDataSourceFilteringEventArgs.cs
- AnnotationComponentManager.cs
- EntityParameterCollection.cs
- DataTableNewRowEvent.cs
- DateTimeOffsetStorage.cs
- GPPOINTF.cs
- SqlCommandBuilder.cs
- Int32RectConverter.cs
- RawStylusInputCustomData.cs
- EdmFunctions.cs
- BitmapEffectGroup.cs
- SafeProcessHandle.cs
- TableLayoutStyle.cs
- RuntimeEnvironment.cs
- SharedDp.cs
- _TransmitFileOverlappedAsyncResult.cs
- RoleGroupCollection.cs
- newinstructionaction.cs
- TypeSystemProvider.cs
- NamespaceQuery.cs
- SoapReflectionImporter.cs
- ConfigDefinitionUpdates.cs
- CodePropertyReferenceExpression.cs
- ValueQuery.cs
- LineGeometry.cs
- MultipartIdentifier.cs
- BitVector32.cs
- CacheMode.cs
- ObjectKeyFrameCollection.cs
- Exceptions.cs
- SelectionRangeConverter.cs