Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / XPath / Internal / NodeFunctions.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NativeCompoundFileAPIs.cs
- SatelliteContractVersionAttribute.cs
- StrokeNodeEnumerator.cs
- WebBrowser.cs
- BitmapFrameEncode.cs
- SwitchCase.cs
- TypeListConverter.cs
- SectionXmlInfo.cs
- BitVec.cs
- AddInActivator.cs
- PathGeometry.cs
- ContainerControl.cs
- OutputCacheSection.cs
- ArgumentElement.cs
- dataobject.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- IdentityManager.cs
- ConnectionPointCookie.cs
- GridPatternIdentifiers.cs
- ListCollectionView.cs
- EdmPropertyAttribute.cs
- ProvidersHelper.cs
- OSFeature.cs
- MarkupCompilePass2.cs
- IisTraceListener.cs
- SystemWebExtensionsSectionGroup.cs
- CharUnicodeInfo.cs
- XmlTextReaderImplHelpers.cs
- CssTextWriter.cs
- UrlPath.cs
- TokenBasedSet.cs
- ContextQuery.cs
- EntityContainerEmitter.cs
- _BasicClient.cs
- ArrangedElement.cs
- httpapplicationstate.cs
- ApplicationBuildProvider.cs
- PrivateFontCollection.cs
- Run.cs
- CqlLexer.cs
- DomainUpDown.cs
- PreviewPageInfo.cs
- DataGridViewIntLinkedList.cs
- PenLineJoinValidation.cs
- ToolboxItemWrapper.cs
- FormsAuthenticationUser.cs
- TransformGroup.cs
- StatusStrip.cs
- OdbcCommandBuilder.cs
- Membership.cs
- Constraint.cs
- TypefaceMetricsCache.cs
- __Error.cs
- RectangleHotSpot.cs
- basemetadatamappingvisitor.cs
- ConversionHelper.cs
- XmlCharacterData.cs
- Size3DConverter.cs
- __ComObject.cs
- DbConnectionStringBuilder.cs
- ObfuscationAttribute.cs
- HttpRequest.cs
- ZoneLinkButton.cs
- PrivilegedConfigurationManager.cs
- SBCSCodePageEncoding.cs
- PhysicalOps.cs
- WorkflowApplicationAbortedException.cs
- WorkflowCommandExtensionItem.cs
- MILUtilities.cs
- InvokeHandlers.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ElapsedEventArgs.cs
- InvalidCastException.cs
- ItemList.cs
- AppSettingsSection.cs
- Object.cs
- CodeGenerator.cs
- FloatUtil.cs
- CodeCatchClause.cs
- NativeMethods.cs
- IteratorFilter.cs
- SqlConnectionStringBuilder.cs
- SafeCertificateStore.cs
- ExtenderControl.cs
- TablePattern.cs
- AutomationTextAttribute.cs
- ThreadStaticAttribute.cs
- SqlBinder.cs
- UserPreferenceChangingEventArgs.cs
- PackageRelationshipCollection.cs
- SqlMethodAttribute.cs
- SelectionItemProviderWrapper.cs
- InternalEnumValidatorAttribute.cs
- ObjectSelectorEditor.cs
- FormatterConverter.cs
- FormsIdentity.cs
- Container.cs
- WsiProfilesElementCollection.cs
- DeclarationUpdate.cs
- SoundPlayer.cs