Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- LinqDataSourceInsertEventArgs.cs
- AlternateView.cs
- ExceptionDetail.cs
- XLinq.cs
- HashJoinQueryOperatorEnumerator.cs
- RenderingBiasValidation.cs
- _SSPIWrapper.cs
- FormView.cs
- HijriCalendar.cs
- Int32RectConverter.cs
- Expressions.cs
- RTLAwareMessageBox.cs
- WsatTransactionFormatter.cs
- DBBindings.cs
- StringSource.cs
- BindingElement.cs
- DataRecordInternal.cs
- HybridObjectCache.cs
- SimpleHandlerBuildProvider.cs
- CompilerGeneratedAttribute.cs
- AlgoModule.cs
- GridViewActionList.cs
- CodeMemberField.cs
- BaseCollection.cs
- BasicExpandProvider.cs
- XmlSchemas.cs
- BitmapCodecInfoInternal.cs
- ImmutablePropertyDescriptorGridEntry.cs
- DocumentReferenceCollection.cs
- control.ime.cs
- FontClient.cs
- SerTrace.cs
- OdbcStatementHandle.cs
- Group.cs
- DateTimePickerDesigner.cs
- LoadWorkflowByKeyAsyncResult.cs
- PreloadedPackages.cs
- ComPlusTraceRecord.cs
- HybridWebProxyFinder.cs
- rsa.cs
- Debugger.cs
- updateconfighost.cs
- TogglePattern.cs
- MediaEntryAttribute.cs
- XmlHierarchicalDataSourceView.cs
- JavascriptXmlWriterWrapper.cs
- HtmlTableCellCollection.cs
- ActivationWorker.cs
- DataListItemCollection.cs
- SafeRegistryHandle.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- RuntimeArgumentHandle.cs
- LicenseProviderAttribute.cs
- XmlReflectionImporter.cs
- ImageList.cs
- ToolBarButton.cs
- CompressionTransform.cs
- ConditionalDesigner.cs
- SecurityTokenProvider.cs
- UnsafeNativeMethods.cs
- DataPagerFieldCollection.cs
- ComboBoxAutomationPeer.cs
- ComponentChangedEvent.cs
- ContextMenu.cs
- Style.cs
- GraphicsContext.cs
- ExpandableObjectConverter.cs
- DefaultClaimSet.cs
- FixedDSBuilder.cs
- PermissionSetEnumerator.cs
- Object.cs
- RecipientInfo.cs
- GeneralTransform3DTo2DTo3D.cs
- OrderByBuilder.cs
- SoapAttributeOverrides.cs
- UnsafeNativeMethods.cs
- AssignDesigner.xaml.cs
- XPathDocumentIterator.cs
- BamlLocalizableResource.cs
- MgmtResManager.cs
- SoapObjectReader.cs
- MobileUserControl.cs
- IsolatedStorageException.cs
- ModulesEntry.cs
- AuthStoreRoleProvider.cs
- XmlSchemaAppInfo.cs
- StylusButtonCollection.cs
- DependencyPropertyAttribute.cs
- TypeElementCollection.cs
- SerializationFieldInfo.cs
- DataControlButton.cs
- MessageSmuggler.cs
- MsmqOutputMessage.cs
- TaskHelper.cs
- DataSourceCacheDurationConverter.cs
- XmlExpressionDumper.cs
- LocatorPartList.cs
- Scene3D.cs
- SqlTypeSystemProvider.cs
- IndependentAnimationStorage.cs