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
- PeerObject.cs
- StyleTypedPropertyAttribute.cs
- SessionStateModule.cs
- WindowsSolidBrush.cs
- DataContractSet.cs
- MissingMemberException.cs
- TreeNodeBindingCollection.cs
- RuntimeWrappedException.cs
- PeerApplication.cs
- StateRuntime.cs
- SystemWebSectionGroup.cs
- SystemResourceKey.cs
- Helper.cs
- XmlQueryTypeFactory.cs
- Soap12ServerProtocol.cs
- ProxyWebPart.cs
- CommonObjectSecurity.cs
- TimeEnumHelper.cs
- ObjectSet.cs
- ColumnPropertiesGroup.cs
- ActiveXHelper.cs
- TrustManagerMoreInformation.cs
- KeyGestureConverter.cs
- SmtpCommands.cs
- DesignerLoader.cs
- CodeIdentifier.cs
- FormsAuthenticationEventArgs.cs
- WebPartConnectionsDisconnectVerb.cs
- PrePrepareMethodAttribute.cs
- AssemblyAssociatedContentFileAttribute.cs
- TimelineGroup.cs
- MachineSettingsSection.cs
- AppearanceEditorPart.cs
- ConfigurationValidatorBase.cs
- StaticResourceExtension.cs
- Condition.cs
- XmlSchemaCollection.cs
- InputScope.cs
- MaskInputRejectedEventArgs.cs
- SoundPlayer.cs
- AlgoModule.cs
- BoolExpr.cs
- DateTimeValueSerializer.cs
- TaskFileService.cs
- CompilerTypeWithParams.cs
- TextEditorSpelling.cs
- CoTaskMemSafeHandle.cs
- TextEncodedRawTextWriter.cs
- _NetworkingPerfCounters.cs
- EditorBrowsableAttribute.cs
- SiteMapHierarchicalDataSourceView.cs
- ClaimComparer.cs
- Win32MouseDevice.cs
- linebase.cs
- ObjectItemConventionAssemblyLoader.cs
- TdsValueSetter.cs
- ColorDialog.cs
- DbConnectionHelper.cs
- TogglePatternIdentifiers.cs
- ImageAutomationPeer.cs
- MetaModel.cs
- ObjectKeyFrameCollection.cs
- FactoryGenerator.cs
- MulticastNotSupportedException.cs
- Soap.cs
- GridLengthConverter.cs
- CompositeControl.cs
- GuidelineSet.cs
- DataTableReaderListener.cs
- BookmarkEventArgs.cs
- ScriptDescriptor.cs
- SessionStateModule.cs
- ObjectDataSourceSelectingEventArgs.cs
- HotSpotCollection.cs
- PersonalizationProviderHelper.cs
- ConstraintStruct.cs
- MenuItemCollection.cs
- EndEvent.cs
- DrawItemEvent.cs
- ActivityStateQuery.cs
- SafeHandles.cs
- EntityDataSource.cs
- ServiceHttpModule.cs
- StrokeCollectionDefaultValueFactory.cs
- VisualBasicSettingsConverter.cs
- XmlBinaryReader.cs
- CodeExpressionCollection.cs
- DispatchWrapper.cs
- AttributeSetAction.cs
- DictionaryBase.cs
- RSAProtectedConfigurationProvider.cs
- HtmlToClrEventProxy.cs
- DrawListViewColumnHeaderEventArgs.cs
- RectangleGeometry.cs
- SiteMap.cs
- StoreItemCollection.Loader.cs
- EntityException.cs
- ControlUtil.cs
- SQLMembershipProvider.cs
- PageThemeParser.cs