Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- XmlILTrace.cs
- BaseServiceProvider.cs
- Attributes.cs
- DataGridViewCellValidatingEventArgs.cs
- ValueTypeFixupInfo.cs
- AsyncOperation.cs
- TextProperties.cs
- Ops.cs
- ClusterUtils.cs
- DesigntimeLicenseContextSerializer.cs
- TextViewSelectionProcessor.cs
- TableCellCollection.cs
- UnsafeNativeMethods.cs
- EdmItemCollection.cs
- SQLByte.cs
- DbDeleteCommandTree.cs
- Shape.cs
- MatrixCamera.cs
- SqlWebEventProvider.cs
- HttpConfigurationSystem.cs
- MdiWindowListStrip.cs
- IncomingWebRequestContext.cs
- ValidationHelper.cs
- InstanceLockedException.cs
- SqlFlattener.cs
- Stroke2.cs
- XmlCharacterData.cs
- Splitter.cs
- ExpressionHelper.cs
- SafeNativeMemoryHandle.cs
- AnchoredBlock.cs
- SystemTcpConnection.cs
- SoapAttributeOverrides.cs
- KeyInterop.cs
- CommentEmitter.cs
- PrinterUnitConvert.cs
- TextDecorations.cs
- WindowsFormsHelpers.cs
- MobileControl.cs
- TimelineGroup.cs
- AccessedThroughPropertyAttribute.cs
- Message.cs
- TCPListener.cs
- RelationshipManager.cs
- XamlPoint3DCollectionSerializer.cs
- PixelShader.cs
- OracleDataAdapter.cs
- PassportAuthenticationEventArgs.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- ConfigurationManagerHelper.cs
- TreeNodeBindingDepthConverter.cs
- ListBase.cs
- ComboBox.cs
- DirectoryNotFoundException.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- XmlSerializerFactory.cs
- cookie.cs
- DataFormat.cs
- SQLDecimalStorage.cs
- NestedContainer.cs
- EdmError.cs
- XPathNavigatorReader.cs
- DataGridViewColumnTypeEditor.cs
- StyleCollection.cs
- SynchronizedCollection.cs
- MemberAccessException.cs
- WindowsListViewGroupHelper.cs
- StrongName.cs
- LinkLabel.cs
- MatrixConverter.cs
- HttpRequestTraceRecord.cs
- Control.cs
- CodeThrowExceptionStatement.cs
- HttpProcessUtility.cs
- SafeFindHandle.cs
- WebPartActionVerb.cs
- DesignerActionService.cs
- WebReferencesBuildProvider.cs
- CalculatedColumn.cs
- DbgUtil.cs
- ResolveNextArgumentWorkItem.cs
- MouseEventArgs.cs
- ControlLocalizer.cs
- ListMarkerSourceInfo.cs
- _BaseOverlappedAsyncResult.cs
- AsyncPostBackErrorEventArgs.cs
- ExecutionEngineException.cs
- ActivityCodeDomReferenceService.cs
- ConfigurationException.cs
- TextContainer.cs
- FormViewRow.cs
- DateTimeOffsetStorage.cs
- FastPropertyAccessor.cs
- DesignerMetadata.cs
- XPathNodeHelper.cs
- TimeSpanConverter.cs
- ButtonFlatAdapter.cs
- QilCloneVisitor.cs
- SafeSecurityHandles.cs
- XpsFixedPageReaderWriter.cs