コード例 #1
0
        public void Matching()
        {
            XPathQueryLanguage query = new XPathQueryLanguage();

             SchematronDocument a = Load("Schematron/Samples/All.sch");
             Rule rule = FindRule(a, "foo");

             XmlDocument doc;
             object matchContext;
             bool matches;

             doc = new XmlDocument();
             doc.LoadXml("<foo>bar</foo>");
             matchContext = query.CreateMatchContext(a, doc);
             XPathNavigator nav = doc.CreateNavigator();
             nav.MoveToFirstChild();
             matches = query.Match(rule, matchContext, nav);
             Assert.IsTrue(matches);

             doc = new XmlDocument();
             doc.LoadXml("<document><a></a></document>");
             matchContext = query.CreateMatchContext(a, doc);
             matches = query.Match(rule, matchContext, doc.CreateNavigator());
             Assert.IsFalse(matches);
        }
コード例 #2
0
        public void Letting_Match()
        {
            XmlDocument doc = new XmlDocument();
             doc.LoadXml("<foo/>");
             XPathNavigator nav = doc.DocumentElement.CreateNavigator();

             XPathQueryLanguage query = new XPathQueryLanguage();
             Rule rule = new Rule();
             rule.Context = " $ename ";

             object context = query.CreateMatchContext(null, doc);
             query.Let(context, "ename", "foo");
             Assert.IsTrue(query.Match(rule, context, nav));

             context = query.CreateMatchContext(null, doc);
             query.Let(context, "ename", "bar");
             Assert.IsFalse(query.Match(rule, context, nav));
        }