Пример #1
0
        public override object Execute(IContextProvider provider, object[] dataPool)
        {
            bool orderedSet = _isOrderedSet;
            bool special    = provider != null &&
                              provider.Context.GetType().Name == "XPathDocumentNavigator";
            XPath2NodeIterator tail;

            if (_path[0].type == XPath2ExprType.Expr)
            {
                tail = XPath2NodeIterator.Create(_path[0].node.Execute(provider, dataPool));
                if (!(_path[0].node is OrderedBinaryOperatorNode))
                {
                    orderedSet = orderedSet & tail.IsSingleIterator;
                }
            }
            else
            {
                tail = _path[0].Create(Context, dataPool,
                                       XPath2NodeIterator.Create(CoreFuncs.ContextNode(provider)), special);
            }
            for (int k = 1; k < _path.Length; k++)
            {
                tail = _path[k].Create(Context, dataPool, tail, special);
            }
            if (!orderedSet)
            {
                return(new DocumentOrderNodeIterator(tail));
            }
            return(tail);
        }
 public override object Execute(IContextProvider provider, object[] dataPool)
 {
     return(CoreFuncs.ContextNode(provider));
 }