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
- Codec.cs
- Vector3DAnimationUsingKeyFrames.cs
- ReflectTypeDescriptionProvider.cs
- SafeRightsManagementQueryHandle.cs
- PropertyRef.cs
- SiteMapHierarchicalDataSourceView.cs
- XmlSchemaObject.cs
- CacheMemory.cs
- XmlDataProvider.cs
- ObjectAssociationEndMapping.cs
- Border.cs
- DBSqlParserColumn.cs
- GifBitmapEncoder.cs
- SystemIcmpV4Statistics.cs
- filewebresponse.cs
- FrameSecurityDescriptor.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- IResourceProvider.cs
- StandardTransformFactory.cs
- XmlSequenceWriter.cs
- DrawingState.cs
- Icon.cs
- sqlser.cs
- XmlDomTextWriter.cs
- ManagedWndProcTracker.cs
- RealizedColumnsBlock.cs
- RSAOAEPKeyExchangeDeformatter.cs
- Light.cs
- ConfigurationSectionGroupCollection.cs
- Operand.cs
- formatstringdialog.cs
- BypassElement.cs
- SafeEventLogWriteHandle.cs
- ArcSegment.cs
- XamlLoadErrorInfo.cs
- SqlDataSourceSelectingEventArgs.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- FormViewCommandEventArgs.cs
- TitleStyle.cs
- MinimizableAttributeTypeConverter.cs
- UnmanagedMemoryAccessor.cs
- MemberRelationshipService.cs
- ListViewSortEventArgs.cs
- DefaultAutoFieldGenerator.cs
- GuidelineSet.cs
- Main.cs
- ToolStripItemClickedEventArgs.cs
- ListManagerBindingsCollection.cs
- PresentationSource.cs
- HandleInitializationContext.cs
- XmlElement.cs
- WorkflowItemsPresenter.cs
- InkCollectionBehavior.cs
- FontStretch.cs
- LoadedOrUnloadedOperation.cs
- NewExpression.cs
- StandardCommands.cs
- InkPresenterAutomationPeer.cs
- SmtpCommands.cs
- ImageMetadata.cs
- InputLanguageCollection.cs
- AccessDataSource.cs
- ToolStripRenderEventArgs.cs
- HtmlTitle.cs
- Decorator.cs
- OdbcDataAdapter.cs
- DynamicPropertyReader.cs
- Utils.cs
- AppDomainAttributes.cs
- FilterElement.cs
- CopyOnWriteList.cs
- SourceItem.cs
- ParserOptions.cs
- XamlReaderHelper.cs
- HashRepartitionEnumerator.cs
- InstallerTypeAttribute.cs
- SafePEFileHandle.cs
- AssociationTypeEmitter.cs
- WinEventHandler.cs
- WebPartChrome.cs
- MimeMultiPart.cs
- CodeAssignStatement.cs
- FixedSOMPage.cs
- ConnectorDragDropGlyph.cs
- ToolStripLabel.cs
- WebPartConnectVerb.cs
- CompModHelpers.cs
- DoubleLink.cs
- StringDictionaryWithComparer.cs
- SQLBinary.cs
- SoapFault.cs
- Dump.cs
- SafeRegistryKey.cs
- FileDialog_Vista.cs
- ListViewTableCell.cs
- DriveInfo.cs
- MutexSecurity.cs
- DataGridRowHeaderAutomationPeer.cs
- FontClient.cs
- CodeRegionDirective.cs