Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- Int64KeyFrameCollection.cs
- CqlBlock.cs
- PathStreamGeometryContext.cs
- WeakReferenceList.cs
- ApplicationCommands.cs
- DataGridViewSortCompareEventArgs.cs
- ActivityDesignerHighlighter.cs
- Assert.cs
- MaterializeFromAtom.cs
- SqlBulkCopyColumnMapping.cs
- WebPartUserCapability.cs
- QueryCacheKey.cs
- SafeSecurityHandles.cs
- SimpleLine.cs
- GeometryValueSerializer.cs
- ProtectedConfigurationSection.cs
- TextSpanModifier.cs
- MemoryFailPoint.cs
- SetIndexBinder.cs
- TemplateControlCodeDomTreeGenerator.cs
- ClickablePoint.cs
- StateBag.cs
- Label.cs
- TableColumnCollection.cs
- EntityCommandDefinition.cs
- DataViewManager.cs
- ConfigurationProviderException.cs
- ServerValidateEventArgs.cs
- ValueTypeFixupInfo.cs
- CompressStream.cs
- SourceElementsCollection.cs
- SubclassTypeValidator.cs
- DataServiceException.cs
- SqlWebEventProvider.cs
- XmlProcessingInstruction.cs
- ZoneButton.cs
- TagElement.cs
- NTAccount.cs
- ReadOnlyHierarchicalDataSourceView.cs
- NativeMethods.cs
- AttributeUsageAttribute.cs
- SessionEndingCancelEventArgs.cs
- TextTreeExtractElementUndoUnit.cs
- ChoiceConverter.cs
- CalendarDesigner.cs
- TrustLevel.cs
- BitmapEncoder.cs
- CodeGotoStatement.cs
- TableLayoutRowStyleCollection.cs
- WizardStepBase.cs
- CommandBinding.cs
- QilPatternVisitor.cs
- DataGridViewCellStyle.cs
- LinkedList.cs
- DisplayNameAttribute.cs
- UnionQueryOperator.cs
- XmlDesigner.cs
- IPAddressCollection.cs
- DetailsViewPagerRow.cs
- HatchBrush.cs
- DynamicILGenerator.cs
- Annotation.cs
- AnnotationAdorner.cs
- ContentHostHelper.cs
- DefaultValidator.cs
- COM2ExtendedTypeConverter.cs
- ChtmlTextWriter.cs
- Padding.cs
- BitArray.cs
- FontEmbeddingManager.cs
- CustomErrorsSection.cs
- ClientScriptManager.cs
- ObjectStateManagerMetadata.cs
- Paragraph.cs
- AccessibleObject.cs
- DesignerProperties.cs
- SmiEventSink_Default.cs
- HttpDigestClientElement.cs
- SqlInfoMessageEvent.cs
- Transform.cs
- Intellisense.cs
- StorageEntitySetMapping.cs
- ProfileModule.cs
- Overlapped.cs
- HwndSourceKeyboardInputSite.cs
- HexParser.cs
- FileUpload.cs
- ListViewDataItem.cs
- ExpressionBinding.cs
- SerializableTypeCodeDomSerializer.cs
- FindRequestContext.cs
- AffineTransform3D.cs
- CodeTryCatchFinallyStatement.cs
- ProxyAttribute.cs
- LambdaCompiler.ControlFlow.cs
- RectangleGeometry.cs
- QuaternionAnimationBase.cs
- XmlNodeReader.cs
- OdbcPermission.cs
- CodeSubDirectoriesCollection.cs