Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- Misc.cs
- XmlExtensionFunction.cs
- TextEncodedRawTextWriter.cs
- CodeVariableDeclarationStatement.cs
- RichTextBoxAutomationPeer.cs
- CustomSignedXml.cs
- DefaultTextStore.cs
- DBCSCodePageEncoding.cs
- PromptEventArgs.cs
- MemberDomainMap.cs
- MimeParameters.cs
- FastEncoderWindow.cs
- GridItemProviderWrapper.cs
- NopReturnReader.cs
- DPTypeDescriptorContext.cs
- WebPartDisplayMode.cs
- SqlUDTStorage.cs
- AudioSignalProblemOccurredEventArgs.cs
- DataGridViewSelectedCellCollection.cs
- DataGridViewTopRowAccessibleObject.cs
- SecurityRuntime.cs
- FileRecordSequenceHelper.cs
- CompositeControl.cs
- WorkflowRuntimeServiceElement.cs
- PhysicalFontFamily.cs
- Application.cs
- TransformerConfigurationWizardBase.cs
- PersonalizationEntry.cs
- RewritingValidator.cs
- WindowsStartMenu.cs
- DataGridViewRowsRemovedEventArgs.cs
- SqlFlattener.cs
- AdRotatorDesigner.cs
- DecimalConstantAttribute.cs
- HttpApplicationStateBase.cs
- MetabaseSettings.cs
- EventItfInfo.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- SchemaImporterExtensionsSection.cs
- DockingAttribute.cs
- SQLBinary.cs
- SqlSupersetValidator.cs
- ColumnCollection.cs
- SafeSecurityHelper.cs
- DoubleConverter.cs
- xamlnodes.cs
- HttpWebRequestElement.cs
- CalloutQueueItem.cs
- ConfigurationManager.cs
- SafeNativeMethods.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- PointUtil.cs
- FileRecordSequence.cs
- GenericWebPart.cs
- ProgressBarHighlightConverter.cs
- DependencyPropertyHelper.cs
- SizeF.cs
- ColorConverter.cs
- FlowDocumentReader.cs
- Type.cs
- X509Extension.cs
- shaperfactoryquerycacheentry.cs
- PenCursorManager.cs
- Soap11ServerProtocol.cs
- RecognizedAudio.cs
- HierarchicalDataSourceDesigner.cs
- TemplateControlCodeDomTreeGenerator.cs
- BezierSegment.cs
- ToolStripOverflow.cs
- ISCIIEncoding.cs
- __Error.cs
- IQueryable.cs
- XmlSchemaGroup.cs
- FixedSOMGroup.cs
- EnumerableRowCollection.cs
- MetadataPropertyAttribute.cs
- RepeatButton.cs
- Menu.cs
- ADConnectionHelper.cs
- MethodBuilder.cs
- AggregateNode.cs
- FileCodeGroup.cs
- DataViewListener.cs
- Mutex.cs
- TrackingMemoryStream.cs
- ApplicationSecurityInfo.cs
- BitmapEffectInputData.cs
- SessionEndingEventArgs.cs
- RemotingAttributes.cs
- CheckBoxBaseAdapter.cs
- MouseBinding.cs
- DataGridCellEditEndingEventArgs.cs
- CacheHelper.cs
- PageContentCollection.cs
- CellTreeNode.cs
- ContextBase.cs
- NameSpaceExtractor.cs
- GenericTypeParameterConverter.cs
- NamespaceInfo.cs
- ErrorTableItemStyle.cs