示例#1
0
        public override object Evaluate(XPathNodeIterator nodeIterator)
        {
            if (xsltContext == null)
            {
                throw XPathException.Create(SR.Xp_NoContext);
            }

            // calculate arguments:
            object[] argVals = new object[_args.Count];
            for (int i = 0; i < _args.Count; i++)
            {
                argVals[i] = _args[i].Evaluate(nodeIterator);
                if (argVals[i] is XPathNodeIterator)
                {// ForBack Compat. To protect our queries from users.
                    argVals[i] = new XPathSelectionIterator(nodeIterator.Current, _args[i]);
                }
            }
            try
            {
                return ProcessResult(_function.Invoke(xsltContext, argVals, nodeIterator.Current));
            }
            catch (Exception ex)
            {
                throw XPathException.Create(SR.Xp_FunctionFailed, QName, ex);
            }
        }
 public override object Evaluate(XPathNodeIterator nodeIterator)
 {
     object obj2;
     if (base.xsltContext == null)
     {
         throw XPathException.Create("Xp_NoContext");
     }
     object[] args = new object[this.args.Count];
     for (int i = 0; i < this.args.Count; i++)
     {
         args[i] = this.args[i].Evaluate(nodeIterator);
         if (args[i] is XPathNodeIterator)
         {
             args[i] = new XPathSelectionIterator(nodeIterator.Current, this.args[i]);
         }
     }
     try
     {
         obj2 = base.ProcessResult(this.function.Invoke(base.xsltContext, args, nodeIterator.Current));
     }
     catch (Exception exception)
     {
         throw XPathException.Create("Xp_FunctionFailed", base.QName, exception);
     }
     return obj2;
 }
        public override object Evaluate(XPathNodeIterator nodeIterator) {
			if (xsltContext == null) {
				throw XPathException.Create(Res.Xp_NoContext);
			}

            // calculate arguments:
            object[] argVals = new object[args.Count];
            for (int i = 0; i < args.Count; i ++) {
                argVals[i] = args[i].Evaluate(nodeIterator);
                if (argVals[i] is XPathNodeIterator) {
                    argVals[i] = new XPathSelectionIterator(nodeIterator.Current, args[i]);
                }
            }
            try {
                return ProcessResult(function.Invoke(xsltContext, argVals, nodeIterator.Current));
            } catch(Exception ex) {
                throw XPathException.Create(Res.Xp_FunctionFailed, QName, ex);
            }
        }
 protected XPathSelectionIterator(XPathSelectionIterator it) {
     this.nav   = it.nav.Clone();
     this.query = (Query) it.query.Clone();
     this.position = it.position;
 }
示例#5
0
 protected XPathSelectionIterator(XPathSelectionIterator it)
 {
     _nav = it._nav.Clone();
     _query = (Query)it._query.Clone();
     _position = it._position;
 }