Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Xml / System / Xml / XPath / Internal / IDQuery.cs / 1 / IDQuery.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.XPath; using System.Xml.Xsl; using System.Diagnostics; using System.Collections.Generic; internal sealed class IDQuery : CacheOutputQuery { public IDQuery(Query arg) : base(arg) {} private IDQuery(IDQuery other) : base(other) { } public override object Evaluate(XPathNodeIterator context) { object argVal = base.Evaluate(context); XPathNavigator contextNode = context.Current.Clone(); switch (GetXPathType(argVal)) { case XPathResultType.NodeSet: XPathNavigator temp; while ((temp = input.Advance()) != null) { ProcessIds(contextNode, temp.Value); } break; case XPathResultType.String: ProcessIds(contextNode, (string)argVal); break; case XPathResultType.Number: ProcessIds(contextNode, StringFunctions.toString((double)argVal)); break; case XPathResultType.Boolean: ProcessIds(contextNode, StringFunctions.toString((bool)argVal)); break; case XPathResultType_Navigator: ProcessIds(contextNode, ((XPathNavigator)argVal).Value); break; } return this; } void ProcessIds(XPathNavigator contextNode, string val) { string[] ids = XmlConvert.SplitString(val); for (int idx = 0; idx < ids.Length; idx++) { if (contextNode.MoveToId(ids[idx])) { Insert(outputBuffer, contextNode); } } } public override XPathNavigator MatchNode(XPathNavigator context) { Evaluate(new XPathSingletonIterator(context, /*moved:*/true)); XPathNavigator result; while ((result = Advance()) != null) { if (result.IsSamePosition(context)) { return context; } } return null; } public override XPathNodeIterator Clone() { return new IDQuery(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.Xml.Xsl; using System.Diagnostics; using System.Collections.Generic; internal sealed class IDQuery : CacheOutputQuery { public IDQuery(Query arg) : base(arg) {} private IDQuery(IDQuery other) : base(other) { } public override object Evaluate(XPathNodeIterator context) { object argVal = base.Evaluate(context); XPathNavigator contextNode = context.Current.Clone(); switch (GetXPathType(argVal)) { case XPathResultType.NodeSet: XPathNavigator temp; while ((temp = input.Advance()) != null) { ProcessIds(contextNode, temp.Value); } break; case XPathResultType.String: ProcessIds(contextNode, (string)argVal); break; case XPathResultType.Number: ProcessIds(contextNode, StringFunctions.toString((double)argVal)); break; case XPathResultType.Boolean: ProcessIds(contextNode, StringFunctions.toString((bool)argVal)); break; case XPathResultType_Navigator: ProcessIds(contextNode, ((XPathNavigator)argVal).Value); break; } return this; } void ProcessIds(XPathNavigator contextNode, string val) { string[] ids = XmlConvert.SplitString(val); for (int idx = 0; idx < ids.Length; idx++) { if (contextNode.MoveToId(ids[idx])) { Insert(outputBuffer, contextNode); } } } public override XPathNavigator MatchNode(XPathNavigator context) { Evaluate(new XPathSingletonIterator(context, /*moved:*/true)); XPathNavigator result; while ((result = Advance()) != null) { if (result.IsSamePosition(context)) { return context; } } return null; } public override XPathNodeIterator Clone() { return new IDQuery(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
- ComponentChangingEvent.cs
- PartitionerStatic.cs
- Propagator.cs
- RecommendedAsConfigurableAttribute.cs
- UInt16.cs
- StringDictionaryWithComparer.cs
- HtmlElementEventArgs.cs
- SQLUtility.cs
- SqlFileStream.cs
- IteratorFilter.cs
- SiteMapNodeItem.cs
- TypeListConverter.cs
- DateTime.cs
- BitmapEffectState.cs
- CustomCategoryAttribute.cs
- WsdlInspector.cs
- Decimal.cs
- SqlBulkCopyColumnMapping.cs
- ConfigurationSettings.cs
- PropertyItemInternal.cs
- oledbconnectionstring.cs
- FaultContext.cs
- EditorAttribute.cs
- Solver.cs
- SHA1.cs
- BaseDataListComponentEditor.cs
- FocusChangedEventArgs.cs
- ContextMarshalException.cs
- DocumentSchemaValidator.cs
- ChangeInterceptorAttribute.cs
- DispatcherSynchronizationContext.cs
- FullTextLine.cs
- StructuredProperty.cs
- EntityDescriptor.cs
- SplitContainer.cs
- MetafileHeaderWmf.cs
- DataGridTableCollection.cs
- BaseAddressPrefixFilterElementCollection.cs
- ExpressionList.cs
- AnnouncementDispatcherAsyncResult.cs
- LinqToSqlWrapper.cs
- PropertyGridView.cs
- MultiView.cs
- X509Chain.cs
- AssemblyInfo.cs
- HttpCachePolicy.cs
- XmlAnyElementAttribute.cs
- Menu.cs
- AutomationPeer.cs
- XmlNode.cs
- input.cs
- NotifyIcon.cs
- ByteStreamGeometryContext.cs
- ScrollViewerAutomationPeer.cs
- HttpCachePolicyElement.cs
- NativeMethods.cs
- DrawingImage.cs
- ToolboxItemSnapLineBehavior.cs
- CalendarDateChangedEventArgs.cs
- AtomMaterializer.cs
- ListViewInsertionMark.cs
- TypographyProperties.cs
- CopyNamespacesAction.cs
- JsonFormatMapping.cs
- DbConnectionPoolIdentity.cs
- RewritingPass.cs
- COAUTHINFO.cs
- OutOfProcStateClientManager.cs
- SequenceDesigner.cs
- KoreanLunisolarCalendar.cs
- SendKeys.cs
- LineVisual.cs
- ErrorStyle.cs
- ConnectorRouter.cs
- WebPartZoneCollection.cs
- AssociationEndMember.cs
- SiteMapDataSourceView.cs
- TemplateControlCodeDomTreeGenerator.cs
- DependencyPropertyDescriptor.cs
- MapPathBasedVirtualPathProvider.cs
- WindowsGrip.cs
- PolyQuadraticBezierSegment.cs
- NativeBuffer.cs
- TouchesCapturedWithinProperty.cs
- DataColumnCollection.cs
- SpellerStatusTable.cs
- FormattedText.cs
- StandardMenuStripVerb.cs
- ToolStripItemImageRenderEventArgs.cs
- UnaryQueryOperator.cs
- DeviceContext2.cs
- XmlReflectionImporter.cs
- UrlMapping.cs
- NameValueFileSectionHandler.cs
- MediaElement.cs
- PlainXmlWriter.cs
- WebPartDescriptionCollection.cs
- CompositeCollectionView.cs
- LicenseContext.cs