Code:
/ DotNET / DotNET / 8.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
- DataSourceListEditor.cs
- MatrixAnimationBase.cs
- MgmtConfigurationRecord.cs
- SQLInt16Storage.cs
- FunctionImportElement.cs
- DefaultBindingPropertyAttribute.cs
- WebPartZone.cs
- StylusDevice.cs
- BadImageFormatException.cs
- PointLightBase.cs
- ChildChangedEventArgs.cs
- Parsers.cs
- X509CertificateCollection.cs
- WorkflowMarkupSerializerMapping.cs
- ClipboardData.cs
- TreeWalkHelper.cs
- TypefaceMap.cs
- StylusEventArgs.cs
- TableRowCollection.cs
- BatchParser.cs
- ClientTargetCollection.cs
- MailMessage.cs
- LinkTarget.cs
- DynamicValueConverter.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- OdbcUtils.cs
- TraceLog.cs
- HttpHandlerAction.cs
- GridViewRowCollection.cs
- ExtenderControl.cs
- RegexMatchCollection.cs
- DiscreteKeyFrames.cs
- AttributeEmitter.cs
- DefinitionBase.cs
- DynamicPropertyReader.cs
- FilterQuery.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- MouseOverProperty.cs
- WorkflowHostingResponseContext.cs
- TabControlAutomationPeer.cs
- SqlBulkCopy.cs
- PointKeyFrameCollection.cs
- Select.cs
- EntityDataSource.cs
- ResetableIterator.cs
- ReflectionTypeLoadException.cs
- RIPEMD160.cs
- BitmapCache.cs
- GridViewAutomationPeer.cs
- ClaimTypeElement.cs
- TransformerInfoCollection.cs
- StrokeNodeOperations2.cs
- CompleteWizardStep.cs
- SqlIdentifier.cs
- MenuScrollingVisibilityConverter.cs
- wgx_exports.cs
- CmsInterop.cs
- CallbackValidatorAttribute.cs
- HostedHttpTransportManager.cs
- EmptyEnumerator.cs
- PhysicalOps.cs
- VectorAnimation.cs
- NativeMethods.cs
- CodeExporter.cs
- TextParentUndoUnit.cs
- AttributeSetAction.cs
- TemplatedMailWebEventProvider.cs
- ServiceMemoryGates.cs
- ViewKeyConstraint.cs
- OleAutBinder.cs
- Cursors.cs
- BasePropertyDescriptor.cs
- DLinqDataModelProvider.cs
- CheckBoxRenderer.cs
- PageAdapter.cs
- AuthenticationService.cs
- CodeSubDirectoriesCollection.cs
- MarkupWriter.cs
- DeferrableContentConverter.cs
- CommentEmitter.cs
- TreeViewImageGenerator.cs
- XmlSchemaIdentityConstraint.cs
- ResetableIterator.cs
- StringComparer.cs
- DirectoryObjectSecurity.cs
- DataGridPagerStyle.cs
- SqlCacheDependencyDatabaseCollection.cs
- XmlHierarchicalEnumerable.cs
- FileUtil.cs
- CompilerState.cs
- ErrorFormatter.cs
- AppSettingsSection.cs
- ToolStripRendererSwitcher.cs
- BinaryObjectInfo.cs
- OutArgument.cs
- Environment.cs
- DataControlHelper.cs
- XmlQueryRuntime.cs
- HostingEnvironmentException.cs
- SettingsBindableAttribute.cs