/// <summary>
        /// Evaluates an XPath expression in a newly created context, making additional parameters available to the expression.
        /// </summary>
        /// <param name="nav">
        /// Navigator indicating the current node; if <c>null</c>, a dummy navigator is used.
        /// </param>
        /// <param name="xpathExpr">XPath expression to evaluate.</param>
        /// <param name="param">
        /// Values to be available while evaluating the expression as <c>$paramN</c>, where N is the
        /// index within this array.
        /// </param>
        /// <returns>The result of evaluating the expression</returns>
        public static object Evaluate(XPathNavigator nav, string xpathExpr, params object[] param)
        {
            Checker.NotNull(xpathExpr, "xpathExpr");

            nav = EnsureNavigator(nav);

            var expr = nav.Compile(xpathExpr);

            var context = new TriflesXPathContext();

            int i = 0;
            foreach (var paramN in param)
            {
                context.AddVariable(XNamespace.None + ("param" + i), paramN);
                i++;
            }

            expr.SetContext(context);
            return nav.Evaluate(expr);
        }
예제 #2
0
        /// <summary>
        /// Evaluates an XPath expression in a newly created context, making additional parameters available to the expression.
        /// </summary>
        /// <param name="nav">
        /// Navigator indicating the current node; if <c>null</c>, a dummy navigator is used.
        /// </param>
        /// <param name="xpathExpr">XPath expression to evaluate.</param>
        /// <param name="param">
        /// Values to be available while evaluating the expression as <c>$paramN</c>, where N is the
        /// index within this array.
        /// </param>
        /// <returns>The result of evaluating the expression</returns>
        public static object Evaluate(XPathNavigator nav, string xpathExpr, params object[] param)
        {
            Checker.NotNull(xpathExpr, "xpathExpr");

            nav = EnsureNavigator(nav);

            var expr = nav.Compile(xpathExpr);

            var context = new TriflesXPathContext();

            int i = 0;

            foreach (var paramN in param)
            {
                context.AddVariable(XNamespace.None + ("param" + i), paramN);
                i++;
            }

            expr.SetContext(context);
            return(nav.Evaluate(expr));
        }
 /// <summary>
 /// Creates a new context using the given name table.
 /// </summary>
 /// <param name="nt"></param>
 /// <param name="parent"></param>
 public TriflesXPathContext(NameTable nt, TriflesXPathContext parent = null)
     : base(nt)
 {
     this.table = CreateChildTable(parent);
 }
 /// <summary>
 /// Creates a new context.
 /// </summary>
 /// <param name="parent"></param>
 public TriflesXPathContext(TriflesXPathContext parent = null)
 {
     this.table = CreateChildTable(parent);
 }
 private static XPathXNamesTable CreateChildTable(TriflesXPathContext parent)
 {
     return new XPathXNamesTable((parent != null) ? parent.table : null);
 }
 public DeferredVariable(TriflesXPathContext context, XName name)
 {
     this.context = context;
     this.name    = Checker.NotNull(name, "name");
 }
 public DeferredVariable(TriflesXPathContext context, XName name)
 {
     this.context = context;
     this.name = Checker.NotNull(name, "name");
 }
예제 #8
0
 private static XPathXNamesTable CreateChildTable(TriflesXPathContext parent)
 {
     return(new XPathXNamesTable((parent != null) ? parent.table : null));
 }
예제 #9
0
 /// <summary>
 /// Creates a new context using the given name table.
 /// </summary>
 /// <param name="nt"></param>
 /// <param name="parent"></param>
 public TriflesXPathContext(NameTable nt, TriflesXPathContext parent = null) : base(nt)
 {
     this.table = CreateChildTable(parent);
 }
예제 #10
0
 /// <summary>
 /// Creates a new context.
 /// </summary>
 /// <param name="parent"></param>
 public TriflesXPathContext(TriflesXPathContext parent = null)
 {
     this.table = CreateChildTable(parent);
 }