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); }
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; }
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; }
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); }); }
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)); }); }
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; }
public void Execute(XQueryResultsContext context) { context.PreTranslateResultSet = x => { return(x.Select(e => e.ElementsAfterSelf().FirstOrDefault())); }; }
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)); }); }
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; }
public void Execute(XQueryResultsContext context) { context.ResultSetInternal = context.ResultSetInternal .Where(x => x.GetAttributeCI("class") == _class); }
public void Execute(XQueryResultsContext context) { context.PreTranslateResultSet = x => { return(x.Elements()); }; }
public void Execute(XQueryResultsContext context) { context.NewResultSet(); }
public void Execute(XQueryResultsContext context) { context.ResultSetInternal = context.ResultSetInternal; }
public void Execute(XQueryResultsContext context) { context.PreTranslateResultSet = x => { return x.Select(e => e.ElementsAfterSelf().FirstOrDefault()); }; }
public void Execute(XQueryResultsContext context) { context.ResultSetInternal = context.ResultSetInternal .Where(x => string.Compare(x.Name.LocalName, _name, true) == 0); }
public void Execute(XQueryResultsContext context) { context.PreTranslateResultSet = x => x.Descendants(); }
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); }); }
public void Execute(XQueryResultsContext context) { context.PreTranslateResultSet = x => { return x.Elements(); }; }