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
- TextLineBreak.cs
- ValueType.cs
- WebHttpSecurityModeHelper.cs
- DataViewManager.cs
- MachineKeyConverter.cs
- XPathParser.cs
- ExpressionBuilder.cs
- FixedDocumentSequencePaginator.cs
- AudioLevelUpdatedEventArgs.cs
- BackEase.cs
- Tag.cs
- KeyInfo.cs
- SmtpFailedRecipientsException.cs
- PrintPageEvent.cs
- IntSecurity.cs
- SiteMapNodeItem.cs
- CodeSnippetStatement.cs
- ColumnMapProcessor.cs
- TypeConverters.cs
- ObjectDataSourceView.cs
- FontCacheUtil.cs
- WebServicesInteroperability.cs
- DispatcherEventArgs.cs
- ByteViewer.cs
- StringExpressionSet.cs
- Typography.cs
- KeyMatchBuilder.cs
- SqlDataSourceFilteringEventArgs.cs
- XmlSchemaComplexType.cs
- BaseDataBoundControl.cs
- RequestCacheManager.cs
- hwndwrapper.cs
- SerializerDescriptor.cs
- FormatConvertedBitmap.cs
- X500Name.cs
- VariantWrapper.cs
- BaseDataList.cs
- RotationValidation.cs
- SecurityTokenProvider.cs
- WindowsContainer.cs
- SoundPlayerAction.cs
- HttpCachePolicy.cs
- XmlNamedNodeMap.cs
- DataSvcMapFile.cs
- GenericRootAutomationPeer.cs
- TranslateTransform3D.cs
- WmpBitmapEncoder.cs
- Pen.cs
- BuildProviderUtils.cs
- DBPropSet.cs
- FrameworkTextComposition.cs
- DataGridViewRowHeaderCell.cs
- StreamGeometryContext.cs
- EventLogInformation.cs
- _UriSyntax.cs
- ResourceAttributes.cs
- MaskDescriptor.cs
- NegotiateStream.cs
- XmlSerializerFactory.cs
- Utils.cs
- Latin1Encoding.cs
- HtmlCalendarAdapter.cs
- TypeForwardedToAttribute.cs
- StorageMappingItemCollection.cs
- TableItemStyle.cs
- CodeIterationStatement.cs
- NativeObjectSecurity.cs
- SemaphoreSecurity.cs
- ProgressBar.cs
- XmlRawWriter.cs
- Size.cs
- RowToParametersTransformer.cs
- Comparer.cs
- ResizeGrip.cs
- ProcessProtocolHandler.cs
- XPathDocument.cs
- Encoding.cs
- SimpleType.cs
- DefaultAssemblyResolver.cs
- FixedPageAutomationPeer.cs
- ThreadNeutralSemaphore.cs
- AspNetSynchronizationContext.cs
- TypeDelegator.cs
- CustomWebEventKey.cs
- EditingCommands.cs
- FileEnumerator.cs
- AnalyzedTree.cs
- _KerberosClient.cs
- Type.cs
- RepeatBehaviorConverter.cs
- AsyncPostBackErrorEventArgs.cs
- URL.cs
- versioninfo.cs
- ListBase.cs
- SchemaInfo.cs
- RSAOAEPKeyExchangeFormatter.cs
- MarshalDirectiveException.cs
- DataGridViewControlCollection.cs
- dataSvcMapFileLoader.cs
- OutputCacheProfile.cs