示例#1
0
        internal void GetXPath(XPathNavigator nav)
        {
            this._specificity = 0;
            StringBuilder xpath = new StringBuilder("*");

            Match match = reSelector.Match(CssSelector);

            while (match.Success)
            {
                if (match.Success && match.Value.Length > 0)
                {
                    string x = String.Empty;
                    x += NsToXPath(match);
                    x += TypeToXPath(match);
                    x += ClassToXPath(match);
                    x += IdToXPath(match);
                    x += PredicatesToXPath(match);
                    x += PseudoClassesToXPath(match, nav);
                    SeperatorToXPath(match, xpath, x);
                }
                match = match.NextMatch();
            }
            if (nav != null)
            {
                Status = XPathSelectorStatus.Parsed;
            }
            sXpath = xpath.ToString();
        }
示例#2
0
        internal void Compile(XPathNavigator nav)
        {
            if (Status == XPathSelectorStatus.Start)
            {
                GetXPath(nav);
            }
            if (Status == XPathSelectorStatus.Parsed)
            {
                xpath = nav.Compile(sXpath);
                xpath.SetContext(GetNSManager());

                Status = XPathSelectorStatus.Compiled;
            }
        }
示例#3
0
        internal void GetXPath(XPathNavigator nav)
        {
            this._specificity = 0;
            StringBuilder xpath = new StringBuilder("*");

            Match match = reSelector.Match(CssSelector);
            while(match.Success)
            {
                if(match.Success && match.Value.Length > 0)
                {
                    string x = String.Empty;
                    x += NsToXPath(match);
                    x += TypeToXPath(match);
                    x += ClassToXPath(match);
                    x += IdToXPath(match);
                    x += PredicatesToXPath(match);
                    x += PseudoClassesToXPath(match, nav);
                    SeperatorToXPath(match, xpath, x);

                }
                match = match.NextMatch();
            }
            if(nav != null) Status = XPathSelectorStatus.Parsed;
            sXpath = xpath.ToString();
        }
示例#4
0
        internal void Compile(XPathNavigator nav)
        {
            if(Status == XPathSelectorStatus.Start)
            {
                GetXPath(nav);
            }
            if(Status == XPathSelectorStatus.Parsed)
            {
                xpath = nav.Compile(sXpath);
                xpath.SetContext(GetNSManager());

                Status = XPathSelectorStatus.Compiled;
            }
        }
 private CssXPathSelector()
 {
     _status = XPathSelectorStatus.Start;
 }