Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / IDQuery.cs / 1305376 / 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
- RpcAsyncResult.cs
- PopupRootAutomationPeer.cs
- GeneralTransform2DTo3DTo2D.cs
- ListMarkerSourceInfo.cs
- SiteMapSection.cs
- ClientUtils.cs
- XmlSignificantWhitespace.cs
- MailWriter.cs
- Track.cs
- LabelExpression.cs
- DataBindingExpressionBuilder.cs
- ExplicitDiscriminatorMap.cs
- AsymmetricSignatureFormatter.cs
- ReferenceService.cs
- WebSysDescriptionAttribute.cs
- SessionEndingCancelEventArgs.cs
- RepeaterItemCollection.cs
- SafeEventLogReadHandle.cs
- ApplicationDirectory.cs
- SessionPageStateSection.cs
- StickyNote.cs
- InputBuffer.cs
- SystemTcpStatistics.cs
- ChildDocumentBlock.cs
- ToolStripPanel.cs
- HtmlInputImage.cs
- lengthconverter.cs
- ReversePositionQuery.cs
- Identity.cs
- CollectionConverter.cs
- HtmlValidatorAdapter.cs
- XPathSingletonIterator.cs
- DataSourceConverter.cs
- GeometryGroup.cs
- LinqDataSourceView.cs
- GlobalEventManager.cs
- XmlNullResolver.cs
- CompositeActivityCodeGenerator.cs
- LinkAreaEditor.cs
- DataFormats.cs
- FunctionOverloadResolver.cs
- ReadOnlyDataSourceView.cs
- X509ScopedServiceCertificateElement.cs
- DiffuseMaterial.cs
- ProxyAttribute.cs
- ViewDesigner.cs
- Directory.cs
- ChannelDemuxer.cs
- CharEntityEncoderFallback.cs
- Metafile.cs
- PackageFilter.cs
- DecimalStorage.cs
- IndexedString.cs
- LambdaCompiler.cs
- IDQuery.cs
- PropertyInformation.cs
- NullableFloatAverageAggregationOperator.cs
- TextContainerChangedEventArgs.cs
- EmbossBitmapEffect.cs
- COSERVERINFO.cs
- StyleXamlParser.cs
- AutomationProperties.cs
- KeySpline.cs
- FolderNameEditor.cs
- UserControl.cs
- DataBoundControlHelper.cs
- ToolStripItemImageRenderEventArgs.cs
- ImportDesigner.xaml.cs
- WebPartConnection.cs
- SqlServices.cs
- InternalRelationshipCollection.cs
- RegisteredExpandoAttribute.cs
- NotificationContext.cs
- Function.cs
- CaseInsensitiveOrdinalStringComparer.cs
- XamlToRtfWriter.cs
- TypeReference.cs
- WebServiceReceive.cs
- TemplatedAdorner.cs
- ObservableCollectionDefaultValueFactory.cs
- EventArgs.cs
- MarkedHighlightComponent.cs
- XamlVector3DCollectionSerializer.cs
- TreeNodeSelectionProcessor.cs
- DeviceContexts.cs
- ErrorFormatterPage.cs
- VerticalAlignConverter.cs
- EventPrivateKey.cs
- WebPartConnectionsDisconnectVerb.cs
- SponsorHelper.cs
- Stack.cs
- NameSpaceExtractor.cs
- BidOverLoads.cs
- RegexReplacement.cs
- WebPartManagerInternals.cs
- DataBindingList.cs
- CloudCollection.cs
- ToolStripItemRenderEventArgs.cs
- InvalidWorkflowException.cs
- BamlLocalizer.cs