Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / XPath / Internal / XPathAncestorQuery.cs / 1 / XPathAncestorQuery.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.Collections.Generic; internal sealed class XPathAncestorQuery : CacheAxisQuery { private bool matchSelf; public XPathAncestorQuery(Query qyInput, string name, string prefix, XPathNodeType typeTest, bool matchSelf) : base(qyInput, name, prefix, typeTest) { this.matchSelf = matchSelf; } private XPathAncestorQuery(XPathAncestorQuery other) : base(other) { this.matchSelf = other.matchSelf; } public override object Evaluate(XPathNodeIterator context) { base.Evaluate(context); XPathNavigator ancestor = null; XPathNavigator input; while ((input = qyInput.Advance()) != null) { if (matchSelf) { if (matches(input)) { if (!Insert(outputBuffer, input)) { // If input is already in output buffer all its ancestors are in a buffer as well. continue; } } } if (ancestor == null || ! ancestor.MoveTo(input)) { ancestor = input.Clone(); } while (ancestor.MoveToParent()) { if (matches(ancestor)) { if (!Insert(outputBuffer, ancestor)) { // If input is already in output buffer all its ancestors are in a buffer as well. break; } } } } return this; } public override XPathNodeIterator Clone() { return new XPathAncestorQuery(this); } public override int CurrentPosition { get { return outputBuffer.Count - count + 1; } } public override QueryProps Properties { get { return base.Properties | QueryProps.Reverse; } } public override void PrintQuery(XmlWriter w) { w.WriteStartElement(this.GetType().Name); if (matchSelf) { w.WriteAttributeString("self", "yes"); } if (NameTest) { w.WriteAttributeString("name", Prefix.Length != 0 ? Prefix + ':' + Name : Name); } if (TypeTest != XPathNodeType.Element) { w.WriteAttributeString("nodeType", TypeTest.ToString()); } qyInput.PrintQuery(w); w.WriteEndElement(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaImporter.cs
- TypeReference.cs
- ReferencedCollectionType.cs
- ClientApiGenerator.cs
- PrinterSettings.cs
- ToolStrip.cs
- CryptoStream.cs
- EntityDataSourceMemberPath.cs
- MSHTMLHostUtil.cs
- ValueTypeFixupInfo.cs
- RegexCompiler.cs
- FixedSOMTextRun.cs
- DataControlFieldHeaderCell.cs
- InvalidFilterCriteriaException.cs
- XmlProcessingInstruction.cs
- ImageConverter.cs
- DBNull.cs
- ConnectivityStatus.cs
- FocusManager.cs
- RowSpanVector.cs
- Hash.cs
- ListViewTableRow.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- Collection.cs
- FamilyMapCollection.cs
- EventManager.cs
- InternalUserCancelledException.cs
- DesignerVerbCollection.cs
- assemblycache.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- FileUtil.cs
- columnmapfactory.cs
- CompilerScopeManager.cs
- XmlSignificantWhitespace.cs
- SQLMoneyStorage.cs
- SerialStream.cs
- ScrollableControl.cs
- AgileSafeNativeMemoryHandle.cs
- RefreshPropertiesAttribute.cs
- ComponentCommands.cs
- CommandExpr.cs
- DispatcherProcessingDisabled.cs
- WorkflowInstanceTerminatedRecord.cs
- ReadOnlyPropertyMetadata.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- ReadOnlyCollection.cs
- Relationship.cs
- XmlLoader.cs
- ProfileSettings.cs
- BlockUIContainer.cs
- XsdDateTime.cs
- ScrollItemPattern.cs
- AttributeSetAction.cs
- OperationCanceledException.cs
- TextServicesDisplayAttribute.cs
- AlternateView.cs
- GlyphShapingProperties.cs
- VirtualPathProvider.cs
- LoginCancelEventArgs.cs
- DataGridItem.cs
- Select.cs
- HtmlInputButton.cs
- CompilationLock.cs
- EntityDataSourceChangingEventArgs.cs
- TdsValueSetter.cs
- Rect3DValueSerializer.cs
- CodePageEncoding.cs
- ResourceIDHelper.cs
- UpdateManifestForBrowserApplication.cs
- SchemaImporter.cs
- FormsAuthenticationModule.cs
- SoapExtensionTypeElementCollection.cs
- EdmScalarPropertyAttribute.cs
- FlowDocumentReaderAutomationPeer.cs
- TypeConverterHelper.cs
- EventManager.cs
- Stack.cs
- SHA384.cs
- SqlDependencyListener.cs
- PeerContact.cs
- SessionViewState.cs
- XPathDocumentIterator.cs
- ClientBuildManagerCallback.cs
- DictionaryContent.cs
- GcSettings.cs
- EndpointPerformanceCounters.cs
- TextStore.cs
- BulletDecorator.cs
- SiteIdentityPermission.cs
- UxThemeWrapper.cs
- ImageCodecInfo.cs
- TimeManager.cs
- EventHandlerService.cs
- ListViewCommandEventArgs.cs
- GlobalEventManager.cs
- LazyTextWriterCreator.cs
- XsltOutput.cs
- BamlReader.cs
- DbQueryCommandTree.cs
- CookieProtection.cs