Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / IDQuery.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RenameRuleObjectDialog.cs
- HyperLink.cs
- PointAnimation.cs
- PassportPrincipal.cs
- SystemNetworkInterface.cs
- LinqTreeNodeEvaluator.cs
- ScriptManagerProxy.cs
- WeakHashtable.cs
- WriterOutput.cs
- MenuItemAutomationPeer.cs
- TextMarkerSource.cs
- SchemaElement.cs
- AuthorizationSection.cs
- XmlEventCache.cs
- FamilyCollection.cs
- SQLDecimal.cs
- DocumentReference.cs
- EventLogPermissionEntryCollection.cs
- UnauthorizedWebPart.cs
- ModelPropertyImpl.cs
- TextWriterTraceListener.cs
- XDRSchema.cs
- TextTreeNode.cs
- WaitForChangedResult.cs
- TextDecorationLocationValidation.cs
- CompilationRelaxations.cs
- PropertyEmitter.cs
- BasicKeyConstraint.cs
- PathGradientBrush.cs
- ASCIIEncoding.cs
- SqlDataSourceCache.cs
- SoapMessage.cs
- WizardPanel.cs
- DropShadowBitmapEffect.cs
- SessionIDManager.cs
- PropertyCollection.cs
- SID.cs
- NullRuntimeConfig.cs
- SoapSchemaMember.cs
- ComponentGlyph.cs
- OperationInfoBase.cs
- UpdateTranslator.cs
- Knowncolors.cs
- MetafileHeader.cs
- TextEditorSpelling.cs
- HtmlShim.cs
- LinkButton.cs
- CodeAccessPermission.cs
- PerformanceCounterPermission.cs
- RepeatBehavior.cs
- ExceptionUtility.cs
- Rotation3DAnimationBase.cs
- SerialPort.cs
- RegionIterator.cs
- DatatypeImplementation.cs
- PeerNameRecord.cs
- DynamicMetaObject.cs
- MaskDescriptor.cs
- Formatter.cs
- CodeTypeMemberCollection.cs
- MsmqProcessProtocolHandler.cs
- StringUtil.cs
- ListViewSortEventArgs.cs
- TypeGenericEnumerableViewSchema.cs
- ProgressBarAutomationPeer.cs
- Drawing.cs
- DataGridViewAccessibleObject.cs
- bidPrivateBase.cs
- UnicodeEncoding.cs
- DSASignatureDeformatter.cs
- ListViewSortEventArgs.cs
- ShaderRenderModeValidation.cs
- SpotLight.cs
- NameValueConfigurationCollection.cs
- EventlogProvider.cs
- OdbcInfoMessageEvent.cs
- WorkflowLayouts.cs
- ValidationHelper.cs
- DescendentsWalkerBase.cs
- DataGridViewButtonCell.cs
- BindingList.cs
- VersionedStream.cs
- KerberosSecurityTokenProvider.cs
- Ipv6Element.cs
- ErasingStroke.cs
- ZipIOCentralDirectoryBlock.cs
- FilterableAttribute.cs
- DataTemplateKey.cs
- GenericTextProperties.cs
- regiisutil.cs
- Validator.cs
- ProcessDesigner.cs
- WebServiceErrorEvent.cs
- BindingExpressionUncommonField.cs
- CollectionContainer.cs
- PowerModeChangedEventArgs.cs
- GlobalizationSection.cs
- WeakReference.cs
- HttpCacheVary.cs
- GeometryConverter.cs