Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / NodeFunctions.cs / 1305376 / NodeFunctions.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- namespace MS.Internal.Xml.XPath { using System; using System.Xml; using System.Xml.XPath; using System.Diagnostics; using System.Globalization; using System.Xml.Xsl; using FT = MS.Internal.Xml.XPath.Function.FunctionType; internal sealed class NodeFunctions : ValueQuery { Query arg = null; FT funcType; XsltContext xsltContext; public NodeFunctions(FT funcType, Query arg) { this.funcType = funcType; this.arg = arg; } public override void SetXsltContext(XsltContext context){ this.xsltContext = context.Whitespace ? context : null; if (arg != null) { arg.SetXsltContext(context); } } private XPathNavigator EvaluateArg(XPathNodeIterator context) { if (arg == null) { return context.Current; } arg.Evaluate(context); return arg.Advance(); } public override object Evaluate(XPathNodeIterator context) { XPathNavigator argVal; switch (funcType) { case FT.FuncPosition: return (double)context.CurrentPosition; case FT.FuncLast: return (double)context.Count; case FT.FuncNameSpaceUri: argVal = EvaluateArg(context); if (argVal != null) { return argVal.NamespaceURI; } break; case FT.FuncLocalName: argVal = EvaluateArg(context); if (argVal != null) { return argVal.LocalName; } break; case FT.FuncName : argVal = EvaluateArg(context); if (argVal != null) { return argVal.Name; } break; case FT.FuncCount: arg.Evaluate(context); int count = 0; if (xsltContext != null) { XPathNavigator nav; while ((nav = arg.Advance()) != null) { if (nav.NodeType != XPathNodeType.Whitespace || xsltContext.PreserveWhitespace(nav)) { count++; } } } else { while (arg.Advance() != null) { count++; } } return (double) count; } return string.Empty; } public override XPathResultType StaticType { get { return Function.ReturnTypes[(int)funcType]; } } public override XPathNodeIterator Clone() { NodeFunctions method = new NodeFunctions(funcType, Clone(arg)); method.xsltContext = this.xsltContext; return method; } public override void PrintQuery(XmlWriter w) { w.WriteStartElement(this.GetType().Name); w.WriteAttributeString("name", funcType.ToString()); if (arg != null) { arg.PrintQuery(w); } w.WriteEndElement(); } } } // 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
- OrderByBuilder.cs
- ToolStripArrowRenderEventArgs.cs
- KnowledgeBase.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- ChannelHandler.cs
- SecurityValidationBehavior.cs
- RegexGroup.cs
- ObjectMemberMapping.cs
- ServerIdentity.cs
- TreeView.cs
- DebugTrace.cs
- FormViewPagerRow.cs
- Config.cs
- AuthorizationSection.cs
- XmlSerializerFactory.cs
- DecoratedNameAttribute.cs
- DeclaredTypeElementCollection.cs
- Delegate.cs
- CookieHandler.cs
- MultipleViewProviderWrapper.cs
- RawStylusInputCustomData.cs
- XPathNode.cs
- InlineCollection.cs
- MemoryMappedView.cs
- InheritedPropertyChangedEventArgs.cs
- UnsafeNativeMethods.cs
- ReachSerializationCacheItems.cs
- PeerCredentialElement.cs
- DataRelationPropertyDescriptor.cs
- TagPrefixCollection.cs
- ObjectSet.cs
- TextSimpleMarkerProperties.cs
- MarkedHighlightComponent.cs
- TraceLevelHelper.cs
- NotSupportedException.cs
- DocumentSequence.cs
- LocalFileSettingsProvider.cs
- SizeF.cs
- Context.cs
- AuthStoreRoleProvider.cs
- DataGridViewTextBoxEditingControl.cs
- AssemblyCollection.cs
- DefaultValueAttribute.cs
- ObjectListCommandsPage.cs
- XmlWriter.cs
- SqlTransaction.cs
- ScheduleChanges.cs
- CorrelationHandle.cs
- BaseCollection.cs
- ProfilePropertyMetadata.cs
- SiblingIterators.cs
- WindowsContainer.cs
- UpdatePanelControlTrigger.cs
- SmtpAuthenticationManager.cs
- SystemKeyConverter.cs
- CriticalFinalizerObject.cs
- SafeNativeMethods.cs
- SecurityPolicySection.cs
- SrgsDocument.cs
- Signature.cs
- IndicFontClient.cs
- KnownAssembliesSet.cs
- IfAction.cs
- BaseTemplateBuildProvider.cs
- EventListener.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- FocusTracker.cs
- DataGridViewAccessibleObject.cs
- PartialList.cs
- InnerItemCollectionView.cs
- KnownBoxes.cs
- ScrollBarRenderer.cs
- DependencyPropertyKind.cs
- Monitor.cs
- ConnectionInterfaceCollection.cs
- ColumnPropertiesGroup.cs
- MenuScrollingVisibilityConverter.cs
- UnsafeNativeMethods.cs
- EntityDataSourceWrapperCollection.cs
- Image.cs
- Form.cs
- WeakHashtable.cs
- AuthenticationException.cs
- ObjectHelper.cs
- KeyManager.cs
- ConsoleTraceListener.cs
- NetTcpSecurityElement.cs
- ToolboxBitmapAttribute.cs
- SourceItem.cs
- FaultPropagationQuery.cs
- ApplicationFileParser.cs
- GenericPrincipal.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- AutomationIdentifier.cs
- DataGridViewRowPrePaintEventArgs.cs
- EmulateRecognizeCompletedEventArgs.cs
- DispatchWrapper.cs
- PersonalizationState.cs
- BitmapCodecInfoInternal.cs
- QueryOutputWriter.cs