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
- PackageDigitalSignatureManager.cs
- KernelTypeValidation.cs
- ThicknessAnimationUsingKeyFrames.cs
- DayRenderEvent.cs
- TransactionFilter.cs
- OdbcParameterCollection.cs
- SchemaObjectWriter.cs
- Calendar.cs
- MemberPath.cs
- BaseResourcesBuildProvider.cs
- XmlAttributes.cs
- WebRequestModulesSection.cs
- DictionaryBase.cs
- DrawingContextDrawingContextWalker.cs
- AliasGenerator.cs
- ProxyFragment.cs
- FunctionUpdateCommand.cs
- Int32AnimationBase.cs
- WebException.cs
- CodeTypeOfExpression.cs
- DocumentAutomationPeer.cs
- TableDesigner.cs
- SQLBinary.cs
- WebBrowserProgressChangedEventHandler.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- _OverlappedAsyncResult.cs
- documentsequencetextview.cs
- WebPartDescription.cs
- EventHandlerList.cs
- WindowsListBox.cs
- SafeThemeHandle.cs
- infer.cs
- WinEventWrap.cs
- Variable.cs
- ServiceMetadataContractBehavior.cs
- ConnectionStringsExpressionBuilder.cs
- COM2FontConverter.cs
- SHA384Managed.cs
- RemotingConfigParser.cs
- BaseCodePageEncoding.cs
- XmlSchemaDatatype.cs
- DataRowView.cs
- HtmlWindowCollection.cs
- XslCompiledTransform.cs
- OrderedEnumerableRowCollection.cs
- FastPropertyAccessor.cs
- WizardStepBase.cs
- PackWebRequestFactory.cs
- SimpleHandlerFactory.cs
- WebMessageFormatHelper.cs
- ControlEvent.cs
- StatusBarAutomationPeer.cs
- ToolStripCustomTypeDescriptor.cs
- DesignOnlyAttribute.cs
- Control.cs
- StyleModeStack.cs
- DataGridViewCellFormattingEventArgs.cs
- SingleConverter.cs
- WinFormsUtils.cs
- FactoryRecord.cs
- NotifyCollectionChangedEventArgs.cs
- XmlSchemaProviderAttribute.cs
- MergeLocalizationDirectives.cs
- ZipIOExtraFieldZip64Element.cs
- IPCCacheManager.cs
- WebOperationContext.cs
- BitmapEffectDrawingContent.cs
- DataTableMapping.cs
- DataList.cs
- ProtocolsConfiguration.cs
- SerializationHelper.cs
- KeyValueConfigurationCollection.cs
- BitmapEffect.cs
- TailPinnedEventArgs.cs
- WebZone.cs
- DataSourceHelper.cs
- CodeDOMUtility.cs
- PeerEndPoint.cs
- EntityConnectionStringBuilder.cs
- DateTimeParse.cs
- ObjectStateManager.cs
- Model3D.cs
- InternalBufferManager.cs
- ScrollChrome.cs
- SmtpLoginAuthenticationModule.cs
- EnumerableCollectionView.cs
- BindingElementExtensionElement.cs
- CompilerHelpers.cs
- DbSetClause.cs
- ScriptReferenceBase.cs
- SqlColumnizer.cs
- DoubleAnimation.cs
- EventData.cs
- ShaderRenderModeValidation.cs
- FlowPosition.cs
- WebPartDeleteVerb.cs
- Triangle.cs
- WebCategoryAttribute.cs
- NetworkAddressChange.cs
- RulePatternOps.cs