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
- Paragraph.cs
- ImportedPolicyConversionContext.cs
- DataObject.cs
- UpdateCommand.cs
- ColumnResizeAdorner.cs
- QueryStringHandler.cs
- SizeIndependentAnimationStorage.cs
- LinearGradientBrush.cs
- TransactionsSectionGroup.cs
- basecomparevalidator.cs
- OutputCacheProfileCollection.cs
- RequestDescription.cs
- SessionStateItemCollection.cs
- WinOEToolBoxItem.cs
- BindingListCollectionView.cs
- PagerSettings.cs
- DataGridrowEditEndingEventArgs.cs
- HandledEventArgs.cs
- ReadOnlyAttribute.cs
- DataPager.cs
- ParserContext.cs
- IdentityHolder.cs
- ManipulationDelta.cs
- EdmPropertyAttribute.cs
- KeyboardDevice.cs
- X509SecurityToken.cs
- Point4D.cs
- DataViewManager.cs
- UniqueIdentifierService.cs
- DataGridrowEditEndingEventArgs.cs
- WindowsSpinner.cs
- SafeFileHandle.cs
- UnitControl.cs
- TextProviderWrapper.cs
- TerminatorSinks.cs
- SiteMapNodeCollection.cs
- ECDsaCng.cs
- DBSchemaTable.cs
- BinaryNode.cs
- XPathSelectionIterator.cs
- FixedDocument.cs
- NewExpression.cs
- RegexCharClass.cs
- ListItemParagraph.cs
- webeventbuffer.cs
- DataRowComparer.cs
- RecognitionEventArgs.cs
- HierarchicalDataBoundControlAdapter.cs
- RectangleGeometry.cs
- As.cs
- SQLBinary.cs
- GridViewCancelEditEventArgs.cs
- Descriptor.cs
- TreeView.cs
- DocumentCollection.cs
- XmlSchemaObjectCollection.cs
- sitestring.cs
- TableLayoutSettingsTypeConverter.cs
- XmlCDATASection.cs
- ConstructorNeedsTagAttribute.cs
- OciLobLocator.cs
- MemberInfoSerializationHolder.cs
- SoapClientMessage.cs
- TextLineBreak.cs
- SamlAdvice.cs
- SystemColors.cs
- SerializationSectionGroup.cs
- Size.cs
- TimelineCollection.cs
- WeakRefEnumerator.cs
- CriticalExceptions.cs
- FormDocumentDesigner.cs
- SoapTransportImporter.cs
- WebPartVerbsEventArgs.cs
- XmlNamedNodeMap.cs
- TrackingProfileSerializer.cs
- DocumentPaginator.cs
- ReadOnlyObservableCollection.cs
- ZipIOExtraFieldPaddingElement.cs
- InputScopeAttribute.cs
- DesignRelation.cs
- InkPresenterAutomationPeer.cs
- connectionpool.cs
- AttachedPropertyMethodSelector.cs
- _NestedMultipleAsyncResult.cs
- MatrixTransform3D.cs
- ADRole.cs
- ResourceContainer.cs
- EtwTrackingBehavior.cs
- LambdaCompiler.Logical.cs
- DataGridViewRowPostPaintEventArgs.cs
- DBConnectionString.cs
- CodeIdentifiers.cs
- SharedPersonalizationStateInfo.cs
- AdapterSwitches.cs
- DockAndAnchorLayout.cs
- OciEnlistContext.cs
- WeakReferenceEnumerator.cs
- SiteMembershipCondition.cs
- CrossSiteScriptingValidation.cs