Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PngBitmapEncoder.cs
- TextEditorSpelling.cs
- AudioStateChangedEventArgs.cs
- DomainConstraint.cs
- CommandEventArgs.cs
- DeviceContexts.cs
- ArgIterator.cs
- TreeNodeBindingDepthConverter.cs
- SemaphoreFullException.cs
- MarkupCompilePass1.cs
- ExtensibleClassFactory.cs
- MimeParameter.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- PtsCache.cs
- PasswordBoxAutomationPeer.cs
- Base64Encoder.cs
- MailMessageEventArgs.cs
- PtsHelper.cs
- XmlSchemaComplexContentRestriction.cs
- ApplicationContext.cs
- WmlMobileTextWriter.cs
- LocationReferenceValue.cs
- XmlCollation.cs
- DBParameter.cs
- TextTreeFixupNode.cs
- XamlStackWriter.cs
- BindingOperations.cs
- ElementsClipboardData.cs
- CreateParams.cs
- SoapHeader.cs
- BuildProviderAppliesToAttribute.cs
- MenuItemCollection.cs
- FrameworkObject.cs
- XmlMtomWriter.cs
- XmlSignatureProperties.cs
- FieldMetadata.cs
- ListCollectionView.cs
- SingleSelectRootGridEntry.cs
- DescriptionAttribute.cs
- FunctionImportMapping.cs
- ExpandableObjectConverter.cs
- OdbcTransaction.cs
- XmlnsDefinitionAttribute.cs
- ByteStreamGeometryContext.cs
- ArraySubsetEnumerator.cs
- EntityWithChangeTrackerStrategy.cs
- PreviewPrintController.cs
- InteropAutomationProvider.cs
- InkCanvasAutomationPeer.cs
- NullableDoubleAverageAggregationOperator.cs
- ValueSerializerAttribute.cs
- MailWebEventProvider.cs
- AnnotationService.cs
- contentDescriptor.cs
- D3DImage.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- CombinedGeometry.cs
- MsmqAppDomainProtocolHandler.cs
- RuleCache.cs
- EventLogEntry.cs
- TableProviderWrapper.cs
- DrawingContextWalker.cs
- ApplicationFileParser.cs
- SafeEventHandle.cs
- TextBox.cs
- ComponentTray.cs
- ExpressionBindingCollection.cs
- ComponentTray.cs
- MatchNoneMessageFilter.cs
- ProcessThread.cs
- TemplateBindingExpressionConverter.cs
- ToolStripPanelRow.cs
- AmbientProperties.cs
- MouseEvent.cs
- FeatureSupport.cs
- EditorPart.cs
- StateWorkerRequest.cs
- DiffuseMaterial.cs
- InfoCardConstants.cs
- NodeInfo.cs
- ScalarType.cs
- SingletonInstanceContextProvider.cs
- CatalogZoneBase.cs
- SqlDeflator.cs
- HGlobalSafeHandle.cs
- MarginsConverter.cs
- FormViewUpdatedEventArgs.cs
- ObjectSet.cs
- altserialization.cs
- RtfControls.cs
- StorageBasedPackageProperties.cs
- ExpressionCopier.cs
- GlyphRunDrawing.cs
- FileDataSourceCache.cs
- _RequestCacheProtocol.cs
- DataFormat.cs
- TagNameToTypeMapper.cs
- WebServiceErrorEvent.cs
- MetadataWorkspace.cs
- SessionParameter.cs