Example #1
0
        public static XPathExpression Compile(string xpath, IXmlNamespaceResolver nsResolver)
        {
            bool flag;
            CompiledXpathExpr expr = new CompiledXpathExpr(new QueryBuilder().Build(xpath, out flag), xpath, flag);

            if (nsResolver != null)
            {
                expr.SetContext(nsResolver);
            }
            return(expr);
        }
Example #2
0
        public static XPathExpression Compile(string xpath, IXmlNamespaceResolver nsResolver)
        {
            bool              hasPrefix;
            Query             query = new QueryBuilder().Build(xpath, out hasPrefix);
            CompiledXpathExpr expr  = new CompiledXpathExpr(query, xpath, hasPrefix);

            if (null != nsResolver)
            {
                expr.SetContext(nsResolver);
            }
            return(expr);
        }
Example #3
0
        /// <include file='doc\XPathNavigator.uex' path='docs/doc[@for="XPathNavigator.Evaluate1"]/*' />
        public virtual object Evaluate(XPathExpression expr, XPathNodeIterator context)
        {
            CompiledXpathExpr cexpr = expr as CompiledXpathExpr;

            if (cexpr == null)
            {
                throw new XPathException(Res.Xp_BadQueryObject);
            }
            IQuery query = cexpr.QueryTree;

            query.reset();

            XPathNavigator current = (context != null) ? context.Current : this;

            if (query.ReturnType() == XPathResultType.NodeSet)
            {
                return(new XPathSelectionIterator(current, expr));
            }
            return(query.getValue(current, context));
        }
Example #4
0
        /// <include file='doc\XPathNavigator.uex' path='docs/doc[@for="XPathNavigator.Matches"]/*' />
        public virtual bool Matches(XPathExpression expr)
        {
            CompiledXpathExpr cexpr = expr as CompiledXpathExpr;

            if (cexpr == null)
            {
                throw new XPathException(Res.Xp_BadQueryObject);
            }

            IQuery query = cexpr.QueryTree;

            if (query.ReturnType() != XPathResultType.NodeSet)
            {
                throw new XPathException(Res.Xp_NodeSetExpected);
            }

            try {
                return(query.MatchNode(this) != null);
            }
            catch (XPathException) {
                throw new XPathException(Res.Xp_InvalidPattern, cexpr.Expression);
            }
        }
Example #5
0
 internal TheQuery( CompiledXpathExpr compiledQuery, InputScopeManager manager) {
     _CompiledQuery = compiledQuery;
     _ScopeManager = manager.Clone();
 }