Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. // //[....] //----------------------------------------------------------------------------- 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
- PublisherMembershipCondition.cs
- _HeaderInfoTable.cs
- basenumberconverter.cs
- GridViewSortEventArgs.cs
- SmtpDigestAuthenticationModule.cs
- UITypeEditor.cs
- TextViewBase.cs
- Control.cs
- TextSyndicationContent.cs
- BamlRecordWriter.cs
- ArgumentElement.cs
- storepermissionattribute.cs
- RowTypePropertyElement.cs
- LineSegment.cs
- Geometry.cs
- SqlDependency.cs
- ButtonField.cs
- SecurityKeyIdentifier.cs
- CacheForPrimitiveTypes.cs
- ActivityMetadata.cs
- DbCommandDefinition.cs
- connectionpool.cs
- Validator.cs
- ProtocolsConfigurationEntry.cs
- DocumentSequence.cs
- DiagnosticSection.cs
- XmlWriterSettings.cs
- DbCommandTree.cs
- DriveNotFoundException.cs
- NumberSubstitution.cs
- ItemChangedEventArgs.cs
- HttpCapabilitiesSectionHandler.cs
- columnmapfactory.cs
- Facet.cs
- DbProviderSpecificTypePropertyAttribute.cs
- RedistVersionInfo.cs
- WebPartCloseVerb.cs
- InheritedPropertyChangedEventArgs.cs
- ConcurrencyMode.cs
- ConvertEvent.cs
- PropertyReferenceSerializer.cs
- SslStream.cs
- TemplateKey.cs
- TextRangeSerialization.cs
- OrderByBuilder.cs
- EntityDataSourceSelectedEventArgs.cs
- Exceptions.cs
- PropertyEmitterBase.cs
- Soap12FormatExtensions.cs
- SupportsEventValidationAttribute.cs
- TreeBuilderBamlTranslator.cs
- CodeAttributeDeclarationCollection.cs
- OleStrCAMarshaler.cs
- ControlAdapter.cs
- FixedSOMFixedBlock.cs
- QilValidationVisitor.cs
- RadioButtonAutomationPeer.cs
- SafeCryptContextHandle.cs
- QuaternionIndependentAnimationStorage.cs
- CustomLineCap.cs
- storepermission.cs
- ListBase.cs
- TextDecorationLocationValidation.cs
- TraceContext.cs
- HandlerFactoryCache.cs
- DropDownButton.cs
- WebZoneDesigner.cs
- EncoderBestFitFallback.cs
- WorkflowInspectionServices.cs
- WindowsFont.cs
- _Rfc2616CacheValidators.cs
- MergeFilterQuery.cs
- OperationInfoBase.cs
- OleDbCommand.cs
- SystemIPInterfaceStatistics.cs
- StackSpiller.Bindings.cs
- LoggedException.cs
- HostingEnvironmentException.cs
- WindowsAltTab.cs
- propertyentry.cs
- TextChange.cs
- AssemblyUtil.cs
- SqlWriter.cs
- DynamicResourceExtensionConverter.cs
- ChannelSinkStacks.cs
- ISFTagAndGuidCache.cs
- XDeferredAxisSource.cs
- Graphics.cs
- TdsParserSessionPool.cs
- ToolStripItemClickedEventArgs.cs
- Hex.cs
- GridViewAutomationPeer.cs
- MappingModelBuildProvider.cs
- TagMapCollection.cs
- EventLogInformation.cs
- namescope.cs
- ConstructorNeedsTagAttribute.cs
- ImageSourceValueSerializer.cs
- ApplicationCommands.cs
- HtmlLinkAdapter.cs