예제 #1
0
		public void Execute(XQueryResultsContext context)
		{
			var set = context.ResultSetInternal;
			Debug.WriteLine("selecting <" + _name + "> from " + set.Count() + " nodes");
			context.ResultSetInternal = set
				.Where(x => string.Compare(x.Name.LocalName, _name, true) == 0);
		}
예제 #2
0
        public void Execute(XQueryResultsContext context)
        {
            var ids     = context.ResultSetInternal.Where(x => x.HasAttributeCI("id")).Select(x => x.GetAttributeCI("id")).ToArray();
            var results = context.ResultSetInternal.Where(x => string.Compare(x.GetAttributeCI("id"), _id, true) == 0);

            context.ResultSetInternal = results;
        }
예제 #3
0
        public void Execute(XQueryResultsContext context)
        {
            // var ids = context.ResultSetInternal.Where(x => x.HasAttributeCI("id")).Select(x => x.GetAttributeCI("id")).ToArray();
            IEnumerable <XElement> results = context.ResultSetInternal.Where(x => string.Compare(x.GetAttributeCI("id"), this._id, true) == 0);

            context.ResultSetInternal = results;
        }
예제 #4
0
        public void Execute(XQueryResultsContext context)
        {
            var set = context.ResultSetInternal;

            Debug.WriteLine("selecting <" + _name + "> from " + set.Count() + " nodes");
            context.ResultSetInternal = set
                                        .Where(x => string.Compare(x.Name.LocalName, _name, true) == 0);
        }
예제 #5
0
		public void Execute(XQueryResultsContext context)
		{
			context.ResultSetInternal = context.ResultSetInternal
				.Where(x => 
					{
						var c = x.GetAttributeCI("class");
						if(c == null)return false;
						return c.Split(' ').Contains(_class);
					});
		}
예제 #6
0
 public void Execute(XQueryResultsContext context)
 {
     context.ResultSetInternal = context.ResultSetInternal
                                 .Where(x =>
     {
         var c = x.GetAttributeCI("class");
         if (c == null)
         {
             return(false);
         }
         return(c.Split(' ').Contains(_class));
     });
 }
예제 #7
0
		public static XElement[] Execute(string query, XDocument doc, params XElement[] baseElements)
		{
			var parserContext = new XQueryParserContext(new SelectorParserCatalog(), query);
			var selectors = Parse(parserContext);
			var resultsContext = new XQueryResultsContext(doc);
			if(baseElements.Length > 0)
				resultsContext.ResultSetInternal = baseElements;
			if(selectors.Length > 0)
				if(selectors.Last().IsTransposeSelector || selectors.First().IsTransposeSelector)
					throw new XQueryException("A query may not start or end with a transposal selector (e.g. >)", query, 0, query.Length);
			foreach(var selector in selectors)
				selector.Execute(resultsContext);
			return resultsContext.ResultSet;
		}
예제 #8
0
 public void Execute(XQueryResultsContext context)
 {
     context.PreTranslateResultSet = x => { return(x.Select(e => e.ElementsAfterSelf().FirstOrDefault())); };
 }
예제 #9
0
        public void Execute(XQueryResultsContext context)
        {
            Func <string, bool> complies;

            switch (_op)
            {
            case null:
                complies = (v) => (v != null);
                break;

            case "=":
                complies = (v) => (v == _value);
                break;

            case "!=":
                // for matching not-is
                complies = (v) => (v == null || _value != v);
                break;

            case "~=":
                // value is whitespace separated words and we need to match only one
                complies = (v) =>
                {
                    if (v == null)
                    {
                        return(false);
                    }
                    var values = v.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                    return(values.Contains(_value));
                };
                break;

            case "|=":
                // for matching lang values like en-US with |=en
                complies = (v) =>
                {
                    if (v == null)
                    {
                        return(false);
                    }
                    if (v == _value)
                    {
                        return(true);
                    }
                    if (v.StartsWith(_value + "-"))
                    {
                        return(true);
                    }
                    return(false);
                };
                break;

            case "^=":
                // for matching starts-with
                complies = (v) =>
                {
                    if (v == null)
                    {
                        return(false);
                    }
                    if (String.IsNullOrEmpty(_value))
                    {
                        return(false);
                    }
                    return(v.StartsWith(_value));
                };
                break;

            case "$=":
                // for matching ends-with
                complies = (v) =>
                {
                    if (v == null)
                    {
                        return(false);
                    }
                    if (String.IsNullOrEmpty(_value))
                    {
                        return(false);
                    }
                    return(v.EndsWith(_value));
                };
                break;

            case "*=":
                // for matching contains
                complies = (v) =>
                {
                    if (v == null)
                    {
                        return(false);
                    }
                    if (String.IsNullOrEmpty(_value))
                    {
                        return(false);
                    }
                    return(v.Contains(_value));
                };
                break;

            default:
                throw new ArgumentException("Not a valid operator:" + _op);
            }
            context.ResultSetInternal = context.ResultSetInternal
                                        .Where(x =>
            {
                string valToCompare = x.GetAttribute(_name);
                return(complies(valToCompare));
            });
        }
예제 #10
0
		public void Execute(XQueryResultsContext context)
		{
			// var ids = context.ResultSetInternal.Where(x => x.HasAttributeCI("id")).Select(x => x.GetAttributeCI("id")).ToArray();
			var results = context.ResultSetInternal.Where(x => string.Compare(x.GetAttributeCI("id"), _id, true) == 0);
			context.ResultSetInternal = results;
		}
예제 #11
0
 public void Execute(XQueryResultsContext context)
 {
     context.ResultSetInternal = context.ResultSetInternal
         .Where(x => x.GetAttributeCI("class") == _class);
 }
예제 #12
0
 public void Execute(XQueryResultsContext context)
 {
     context.PreTranslateResultSet = x => { return(x.Elements()); };
 }
예제 #13
0
 public void Execute(XQueryResultsContext context)
 {
     context.ResultSetInternal = context.ResultSetInternal
                                 .Where(x => x.GetAttributeCI("class") == _class);
 }
예제 #14
0
		public void Execute(XQueryResultsContext context)
		{
			context.NewResultSet();
		}
예제 #15
0
 public void Execute(XQueryResultsContext context)
 {
     context.ResultSetInternal = context.ResultSetInternal;
 }
예제 #16
0
		public void Execute(XQueryResultsContext context)
		{
			context.PreTranslateResultSet = x => { return x.Select(e => e.ElementsAfterSelf().FirstOrDefault()); };
		}
예제 #17
0
 public void Execute(XQueryResultsContext context)
 {
     context.ResultSetInternal = context.ResultSetInternal
         .Where(x => string.Compare(x.Name.LocalName, _name, true) == 0);
 }
예제 #18
0
 public void Execute(XQueryResultsContext context)
 {
     context.NewResultSet();
 }
예제 #19
0
		public void Execute(XQueryResultsContext context)
		{
			context.ResultSetInternal = context.ResultSetInternal;
		}
 public void Execute(XQueryResultsContext context)
 {
     context.PreTranslateResultSet = x => x.Descendants();
 }
예제 #21
0
 public void Execute(XQueryResultsContext context)
 {
     context.PreTranslateResultSet = x => x.Descendants();
 }
예제 #22
0
 public void Execute(XQueryResultsContext context)
 {
     Func<string, bool> complies;
     switch (_op)
     {
         case null:
             complies = (v) => (v != null);
             break;
         case "=":
             complies = (v) => (v == _value);
             break;
         case "!=":
             // for matching not-is
             complies = (v) => (v == null || _value!=v);
             break;
         case "~=":
             // value is whitespace separated words and we need to match only one
             complies = (v) =>
                 {
                     if (v == null) return false;
                     var values = v.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                     return values.Contains(_value);
                 };
             break;
         case "|=":
             // for matching lang values like en-US with |=en
             complies = (v) =>
             {
                 if (v == null) return false;
                 if(v == _value)return true;
                 if (v.StartsWith(_value + "-")) return true;
                 return false;
             };
             break;
         case "^=":
             // for matching starts-with
             complies = (v) =>
             {
                 if (v == null) return false;
                 if (String.IsNullOrEmpty(_value)) return false;
                 return (v.StartsWith(_value));
             };
             break;
         case "$=":
             // for matching ends-with
             complies = (v) =>
             {
                 if (v == null) return false;
                 if (String.IsNullOrEmpty(_value)) return false;
                 return (v.EndsWith(_value));
             };
             break;
         case "*=":
             // for matching contains
             complies = (v) =>
             {
                 if (v == null) return false;
                 if (String.IsNullOrEmpty(_value)) return false;
                 return (v.Contains(_value));
             };
             break;
         default:
             throw new ArgumentException("Not a valid operator:" + _op);
     }
     context.ResultSetInternal = context.ResultSetInternal
         .Where(x =>
             {
                 string valToCompare = x.GetAttribute(_name);
                 return complies(valToCompare);
             });
 }
예제 #23
0
		public void Execute(XQueryResultsContext context)
		{
			context.PreTranslateResultSet = x => { return x.Elements(); };
		}