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
- State.cs
- EntityDataSourceDataSelectionPanel.cs
- ApplicationTrust.cs
- LineVisual.cs
- CapabilitiesState.cs
- Transform3D.cs
- HelpExampleGenerator.cs
- SingleObjectCollection.cs
- PlainXmlDeserializer.cs
- HttpServerVarsCollection.cs
- SqlRowUpdatedEvent.cs
- XmlSchemaAttributeGroup.cs
- ReadOnlyAttribute.cs
- XhtmlMobileTextWriter.cs
- PaintValueEventArgs.cs
- XamlPathDataSerializer.cs
- Lookup.cs
- ExpressionList.cs
- Comparer.cs
- CancelRequestedRecord.cs
- FlowNode.cs
- IIS7UserPrincipal.cs
- QuadraticEase.cs
- ColorConverter.cs
- RootProfilePropertySettingsCollection.cs
- _LocalDataStoreMgr.cs
- CodeLabeledStatement.cs
- XmlDataImplementation.cs
- EncoderBestFitFallback.cs
- thaishape.cs
- SQLSingleStorage.cs
- HttpInputStream.cs
- HandleRef.cs
- InplaceBitmapMetadataWriter.cs
- CodeLabeledStatement.cs
- Int32Storage.cs
- CustomValidator.cs
- DocumentOrderQuery.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- WindowShowOrOpenTracker.cs
- WrapPanel.cs
- ReadOnlyPropertyMetadata.cs
- WebPartConnectionsCloseVerb.cs
- StrokeDescriptor.cs
- TreePrinter.cs
- SQLDouble.cs
- DependsOnAttribute.cs
- RuntimeCompatibilityAttribute.cs
- CommandEventArgs.cs
- WorkflowServiceBuildProvider.cs
- MetaColumn.cs
- CollectionViewGroupInternal.cs
- TextTreeTextNode.cs
- EntityClientCacheKey.cs
- ISessionStateStore.cs
- ServiceErrorHandler.cs
- ValuePattern.cs
- DBSqlParserColumnCollection.cs
- TableStyle.cs
- CodeTryCatchFinallyStatement.cs
- UnsafeNativeMethods.cs
- _TLSstream.cs
- NonSerializedAttribute.cs
- TextLineBreak.cs
- UserControlCodeDomTreeGenerator.cs
- ObjectQuery.cs
- RijndaelCryptoServiceProvider.cs
- LogSwitch.cs
- AuthenticationModulesSection.cs
- Logging.cs
- Empty.cs
- DataServiceHostWrapper.cs
- Transactions.cs
- DocumentPageView.cs
- InternalResources.cs
- AttributeData.cs
- MembershipUser.cs
- WebPartEditVerb.cs
- TripleDES.cs
- JsonQueryStringConverter.cs
- Token.cs
- ICspAsymmetricAlgorithm.cs
- DefaultAuthorizationContext.cs
- MULTI_QI.cs
- CaseInsensitiveHashCodeProvider.cs
- CapacityStreamGeometryContext.cs
- DecoratedNameAttribute.cs
- CodeAccessSecurityEngine.cs
- MenuItem.cs
- ImageProxy.cs
- Transform.cs
- GenericsNotImplementedException.cs
- ObjectListCommandEventArgs.cs
- SystemEvents.cs
- FillBehavior.cs
- TextElementCollectionHelper.cs
- SmtpClient.cs
- EntityTypeEmitter.cs
- EventLogger.cs
- OdbcFactory.cs