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
- TimeSpanSecondsOrInfiniteConverter.cs
- ToolBarPanel.cs
- _BufferOffsetSize.cs
- IriParsingElement.cs
- CollectionTypeElement.cs
- EnumType.cs
- Utility.cs
- MenuItemBinding.cs
- TransformCollection.cs
- PieceDirectory.cs
- PriorityItem.cs
- ColorConvertedBitmap.cs
- DrawingAttributesDefaultValueFactory.cs
- WebServiceEnumData.cs
- XmlElementAttributes.cs
- GeometryCollection.cs
- VisualCollection.cs
- TargetException.cs
- AttachedPropertiesService.cs
- StructuredTypeEmitter.cs
- SoapEnumAttribute.cs
- ByteFacetDescriptionElement.cs
- HtmlControlPersistable.cs
- DataFormats.cs
- fixedPageContentExtractor.cs
- CanExecuteRoutedEventArgs.cs
- _SslState.cs
- Cursor.cs
- WorkflowInstanceExtensionCollection.cs
- WebDisplayNameAttribute.cs
- RuntimeCompatibilityAttribute.cs
- ToolboxService.cs
- StringUtil.cs
- FileChangesMonitor.cs
- ExpressionWriter.cs
- ProcessModelInfo.cs
- StateMachineDesignerPaint.cs
- ServicePrincipalNameElement.cs
- TextParaClient.cs
- OSFeature.cs
- PasswordTextContainer.cs
- IfAction.cs
- StatusBarItemAutomationPeer.cs
- HostedTransportConfigurationManager.cs
- AddInStore.cs
- OracleInternalConnection.cs
- Funcletizer.cs
- MgmtConfigurationRecord.cs
- EntityParameter.cs
- WebPartManagerDesigner.cs
- ReadOnlyHierarchicalDataSource.cs
- FileRecordSequence.cs
- TextElement.cs
- SQLStringStorage.cs
- SharedUtils.cs
- ADConnectionHelper.cs
- CoreSwitches.cs
- UTF7Encoding.cs
- AppDomainGrammarProxy.cs
- List.cs
- NavigationService.cs
- AmbiguousMatchException.cs
- EntityCommand.cs
- CircleHotSpot.cs
- CommentEmitter.cs
- ObjectListField.cs
- ProcessModelSection.cs
- SiteMapDataSourceView.cs
- Mapping.cs
- Decimal.cs
- BrowserTree.cs
- WebPartRestoreVerb.cs
- WebPartEditorCancelVerb.cs
- URLIdentityPermission.cs
- _PooledStream.cs
- GeneralTransformCollection.cs
- ChannelManager.cs
- XhtmlBasicTextBoxAdapter.cs
- SessionStateContainer.cs
- DefaultPropertyAttribute.cs
- PropertyEntry.cs
- HostedTransportConfigurationManager.cs
- BuildManagerHost.cs
- ToolStripItemGlyph.cs
- DbProviderSpecificTypePropertyAttribute.cs
- ConcurrencyMode.cs
- TextEffect.cs
- WindowsContainer.cs
- DesignerTransactionCloseEvent.cs
- AdRotator.cs
- AuthorizationRuleCollection.cs
- QilValidationVisitor.cs
- Formatter.cs
- NullableFloatSumAggregationOperator.cs
- ButtonBaseAdapter.cs
- WriterOutput.cs
- CustomAttributeBuilder.cs
- IOThreadScheduler.cs
- SecurityElement.cs
- SqlProcedureAttribute.cs