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
- ArithmeticException.cs
- Variant.cs
- unitconverter.cs
- Timer.cs
- CheckBoxField.cs
- CodeIndexerExpression.cs
- CustomCategoryAttribute.cs
- AsyncDataRequest.cs
- PathFigureCollectionValueSerializer.cs
- SoapIncludeAttribute.cs
- SqlInfoMessageEvent.cs
- MapPathBasedVirtualPathProvider.cs
- FlowDocumentView.cs
- PropertyMapper.cs
- XmlIlGenerator.cs
- IisTraceWebEventProvider.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- SystemWebCachingSectionGroup.cs
- ValueUtilsSmi.cs
- CellPartitioner.cs
- TypeUtil.cs
- StreamInfo.cs
- SchemaConstraints.cs
- Triplet.cs
- SoapCodeExporter.cs
- WebBrowserNavigatedEventHandler.cs
- RecordConverter.cs
- ICspAsymmetricAlgorithm.cs
- SecurityCriticalDataForSet.cs
- AnonymousIdentificationModule.cs
- FormatException.cs
- ThreadLocal.cs
- SocketCache.cs
- ApplicationServiceManager.cs
- ChildTable.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- SMSvcHost.cs
- PrimarySelectionAdorner.cs
- GenericPrincipal.cs
- DeploymentSectionCache.cs
- XhtmlBasicLabelAdapter.cs
- BitStream.cs
- ImageListStreamer.cs
- TargetInvocationException.cs
- PermissionToken.cs
- SymmetricSecurityBindingElement.cs
- HostingEnvironmentSection.cs
- MaterialCollection.cs
- OutputCacheSettingsSection.cs
- WebPartConnectionsDisconnectVerb.cs
- IisTraceListener.cs
- TextSelectionHighlightLayer.cs
- XmlnsDefinitionAttribute.cs
- XmlBinaryReader.cs
- Style.cs
- DesignerActionItem.cs
- TransformerInfo.cs
- DecimalAnimationBase.cs
- ProxyWebPartManager.cs
- safemediahandle.cs
- TableCell.cs
- PeerPresenceInfo.cs
- SpStreamWrapper.cs
- Matrix.cs
- TreeViewDataItemAutomationPeer.cs
- CompoundFileDeflateTransform.cs
- ICspAsymmetricAlgorithm.cs
- MarkupProperty.cs
- ConfigurationStrings.cs
- WebPartPersonalization.cs
- DynamicDiscoveryDocument.cs
- MailWebEventProvider.cs
- MailBnfHelper.cs
- ScriptingWebServicesSectionGroup.cs
- TrustManagerMoreInformation.cs
- ConfigurationElement.cs
- TextServicesDisplayAttribute.cs
- UTF32Encoding.cs
- EntityDataSourceState.cs
- UnsafeNativeMethods.cs
- Oid.cs
- SoapTypeAttribute.cs
- WorkflowRuntimeServiceElementCollection.cs
- SelectionItemPattern.cs
- BoundingRectTracker.cs
- ContractNamespaceAttribute.cs
- ProcessInputEventArgs.cs
- UnmanagedMemoryStreamWrapper.cs
- CodeMemberField.cs
- BaseDataList.cs
- Model3DCollection.cs
- Attribute.cs
- NavigationFailedEventArgs.cs
- SelectingProviderEventArgs.cs
- DataError.cs
- DocumentPaginator.cs
- Part.cs
- SyntaxCheck.cs
- BamlRecordHelper.cs
- SafeCryptoHandles.cs