Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SHA512.cs
- DbgUtil.cs
- DataStreamFromComStream.cs
- FillBehavior.cs
- ChildTable.cs
- CreateUserErrorEventArgs.cs
- WindowsAuthenticationEventArgs.cs
- StreamResourceInfo.cs
- TextFormattingConverter.cs
- IPAddress.cs
- ErrorStyle.cs
- FigureParaClient.cs
- SqlLiftWhereClauses.cs
- complextypematerializer.cs
- FontStyle.cs
- DataPagerFieldCollection.cs
- UserInitiatedNavigationPermission.cs
- ValidationService.cs
- RichTextBox.cs
- ObjectDataSourceMethodEventArgs.cs
- AppDomainManager.cs
- PermissionListSet.cs
- CurrentChangingEventArgs.cs
- RuntimeCompatibilityAttribute.cs
- BaseTreeIterator.cs
- DeviceContext.cs
- KeyedCollection.cs
- SqlAggregateChecker.cs
- TemplatedWizardStep.cs
- validationstate.cs
- TemplatedMailWebEventProvider.cs
- NetworkStream.cs
- DeobfuscatingStream.cs
- MatcherBuilder.cs
- CompoundFileStorageReference.cs
- unitconverter.cs
- EmbeddedMailObjectsCollection.cs
- ToggleProviderWrapper.cs
- Annotation.cs
- HtmlTable.cs
- OdbcCommandBuilder.cs
- BinaryUtilClasses.cs
- UserControlAutomationPeer.cs
- XmlSchemaElement.cs
- PermissionToken.cs
- ProcessHost.cs
- DayRenderEvent.cs
- CodeTypeMember.cs
- WorkflowServiceHostFactory.cs
- ObjectCacheHost.cs
- DocumentXPathNavigator.cs
- WriteableBitmap.cs
- BindingMAnagerBase.cs
- _SslStream.cs
- StrokeNodeOperations2.cs
- ControlBuilder.cs
- RSAPKCS1SignatureDeformatter.cs
- MobileListItem.cs
- SystemEvents.cs
- SudsParser.cs
- MsmqIntegrationMessagePool.cs
- XmlCDATASection.cs
- SiteMapNodeItem.cs
- Parser.cs
- ConfigurationStrings.cs
- WSDualHttpBinding.cs
- GAC.cs
- CheckBoxPopupAdapter.cs
- typedescriptorpermission.cs
- HttpHostedTransportConfiguration.cs
- GroupPartitionExpr.cs
- GlyphRunDrawing.cs
- TabPanel.cs
- RecordManager.cs
- RC2.cs
- Transform3DGroup.cs
- PathData.cs
- DbConnectionInternal.cs
- TreeNodeBinding.cs
- TraceRecord.cs
- ZoneLinkButton.cs
- GuidConverter.cs
- BitmapSource.cs
- Track.cs
- glyphs.cs
- RegexStringValidator.cs
- ItemsPanelTemplate.cs
- TemplateBindingExtensionConverter.cs
- ObjectStateEntryDbDataRecord.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- ListViewInsertEventArgs.cs
- BuildProviderUtils.cs
- LongValidatorAttribute.cs
- MessageFormatterConverter.cs
- SoapIncludeAttribute.cs
- DataGridViewColumnCollection.cs
- Exception.cs
- XPathAncestorIterator.cs
- FileUtil.cs
- MatrixCamera.cs