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
- TextSelectionHighlightLayer.cs
- SqlProvider.cs
- Point3DCollectionConverter.cs
- AppDomainShutdownMonitor.cs
- TrustManagerPromptUI.cs
- QueryUtil.cs
- XmlSerializerNamespaces.cs
- SafeHandles.cs
- HyperLinkDataBindingHandler.cs
- TemplateBaseAction.cs
- QilExpression.cs
- SeekStoryboard.cs
- ReferencedType.cs
- WasEndpointConfigContainer.cs
- DisableDpiAwarenessAttribute.cs
- SelectionItemPattern.cs
- SqlDependencyListener.cs
- DataGridViewCellStyleConverter.cs
- Renderer.cs
- DocumentsTrace.cs
- DeviceSpecificDesigner.cs
- EmptyWorkItem.cs
- SchemaElementLookUpTable.cs
- TextTreeText.cs
- TiffBitmapEncoder.cs
- HandlerFactoryCache.cs
- MatrixAnimationUsingPath.cs
- QuerySettings.cs
- InstanceCreationEditor.cs
- WriteTimeStream.cs
- MediaPlayerState.cs
- TimeEnumHelper.cs
- NamespaceQuery.cs
- SqlTopReducer.cs
- DataGridViewTextBoxEditingControl.cs
- WindowsListViewGroupHelper.cs
- PageFunction.cs
- SQLBytesStorage.cs
- PtsContext.cs
- SessionEndingCancelEventArgs.cs
- BufferedGraphicsContext.cs
- WebConfigurationHostFileChange.cs
- UserNameSecurityTokenAuthenticator.cs
- ObjectPropertyMapping.cs
- SmiEventSink.cs
- FaultContractInfo.cs
- CommandField.cs
- ContainerSelectorActiveEvent.cs
- EasingKeyFrames.cs
- ImageAttributes.cs
- WebPartDisplayModeEventArgs.cs
- BamlLocalizer.cs
- HttpModuleCollection.cs
- PenContexts.cs
- LinqDataSourceDisposeEventArgs.cs
- PriorityQueue.cs
- Msmq.cs
- TrackingDataItemValue.cs
- PointHitTestParameters.cs
- Vector3DCollectionValueSerializer.cs
- SettingsContext.cs
- _ListenerRequestStream.cs
- ProfilePropertyMetadata.cs
- ClientScriptManagerWrapper.cs
- SafeLocalMemHandle.cs
- TranslateTransform.cs
- SegmentInfo.cs
- CategoryGridEntry.cs
- serverconfig.cs
- WebUtil.cs
- SymmetricKey.cs
- ExpressionVisitorHelpers.cs
- Encoder.cs
- IDQuery.cs
- CodeDirectoryCompiler.cs
- OutputWindow.cs
- ApplicationGesture.cs
- AnnouncementService.cs
- ComponentEditorForm.cs
- EntityTypeEmitter.cs
- MobileListItem.cs
- SoapExtensionImporter.cs
- StreamGeometryContext.cs
- XmlTextEncoder.cs
- ImageField.cs
- QilExpression.cs
- SourceFileBuildProvider.cs
- NominalTypeEliminator.cs
- FixedHighlight.cs
- ClosableStream.cs
- DataGridRow.cs
- SystemIPGlobalProperties.cs
- PhysicalAddress.cs
- ImportStoreException.cs
- DynamicExpression.cs
- SchemaInfo.cs
- XmlSchemaInfo.cs
- _DigestClient.cs
- RecognizedPhrase.cs
- ExternalDataExchangeService.cs