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
- Currency.cs
- CodeExpressionCollection.cs
- SqlTriggerContext.cs
- Walker.cs
- HttpsChannelFactory.cs
- JournalEntryStack.cs
- BufferedGraphicsManager.cs
- Action.cs
- DataSourceCacheDurationConverter.cs
- FixedSOMTableRow.cs
- DrawingImage.cs
- HuffModule.cs
- SelectedCellsCollection.cs
- XmlUtf8RawTextWriter.cs
- StorageEntityTypeMapping.cs
- NativeMethods.cs
- XPathQueryGenerator.cs
- BindingOperations.cs
- ResXResourceSet.cs
- Guid.cs
- ConnectionString.cs
- Wildcard.cs
- DnsEndPoint.cs
- Span.cs
- Track.cs
- StaticFileHandler.cs
- TextFormatterContext.cs
- OracleConnectionString.cs
- TypeConvertions.cs
- SizeConverter.cs
- ComponentResourceKey.cs
- SiteMapPath.cs
- FlowPosition.cs
- TreeViewItem.cs
- TextTreeNode.cs
- BindableTemplateBuilder.cs
- TouchDevice.cs
- DbMetaDataColumnNames.cs
- PinnedBufferMemoryStream.cs
- CursorConverter.cs
- CommonDialog.cs
- VisualState.cs
- ResourceAssociationSetEnd.cs
- ClientCredentialsSecurityTokenManager.cs
- AutoGeneratedFieldProperties.cs
- DesignTimeType.cs
- _Events.cs
- exports.cs
- ProxyAttribute.cs
- EventProxy.cs
- LabelExpression.cs
- ResolveNameEventArgs.cs
- WCFModelStrings.Designer.cs
- FrameDimension.cs
- LoadWorkflowCommand.cs
- DataGridToolTip.cs
- OracleBinary.cs
- QilScopedVisitor.cs
- GenericParameterDataContract.cs
- WebPartsSection.cs
- SemaphoreFullException.cs
- TextHidden.cs
- BitmapEffectRenderDataResource.cs
- streamingZipPartStream.cs
- HatchBrush.cs
- GPRECTF.cs
- Condition.cs
- SecUtil.cs
- HttpClientProtocol.cs
- ExtensibleClassFactory.cs
- HtmlTitle.cs
- OleDbEnumerator.cs
- WebPartDescription.cs
- ControlTemplate.cs
- GetWinFXPath.cs
- TransactionManagerProxy.cs
- EntityContainerEntitySet.cs
- SQLByteStorage.cs
- TypeElementCollection.cs
- MetaType.cs
- TokenFactoryFactory.cs
- RangeContentEnumerator.cs
- DataSourceUtil.cs
- EventToken.cs
- OdbcConnectionOpen.cs
- SqlGatherProducedAliases.cs
- SoapObjectInfo.cs
- RegexMatch.cs
- ErasingStroke.cs
- SingleQueryOperator.cs
- XmlAttributes.cs
- HtmlInputRadioButton.cs
- EncodingStreamWrapper.cs
- TerminatorSinks.cs
- OpCodes.cs
- ToolStripDropTargetManager.cs
- DrawingVisualDrawingContext.cs
- SymmetricAlgorithm.cs
- TableHeaderCell.cs
- DataGridViewRowConverter.cs