public object EvaluateKey(IStaticXsltContext staticContext, BaseIterator iter, Expression nameExpr, Expression valueExpr) { XmlQualifiedName keyName = this.GetKeyName(staticContext, iter, nameExpr); KeyIndexTable indexTable = this.GetIndexTable(keyName); return(indexTable.Evaluate(iter, valueExpr)); }
public bool MatchesKey(XPathNavigator nav, IStaticXsltContext staticContext, string name, string value) { XmlQualifiedName name2 = XslNameUtil.FromString(name, staticContext); KeyIndexTable indexTable = this.GetIndexTable(name2); return(indexTable.Matches(nav, value, this)); }
public static XPathExpression Get(string xpath, IStaticXsltContext ctx) { object key = (ctx == null) ? ExpressionCache.dummy : ctx; object obj = ExpressionCache.cache_lock; lock (obj) { WeakReference weakReference = ExpressionCache.table_per_ctx[key] as WeakReference; if (weakReference == null) { return(null); } Hashtable hashtable = weakReference.Target as Hashtable; if (hashtable == null) { ExpressionCache.table_per_ctx[key] = null; return(null); } weakReference = (hashtable[xpath] as WeakReference); if (weakReference != null) { XPathExpression xpathExpression = weakReference.Target as XPathExpression; if (xpathExpression != null) { return(xpathExpression); } hashtable[xpath] = null; } } return(null); }
internal static XPathExpression Compile (string xpath, NSResolver nsResolver, IStaticXsltContext ctx) { XPathParser parser = new XPathParser (ctx); CompiledExpression x = new CompiledExpression (xpath, parser.Compile (xpath)); x.SetContext (nsResolver); return x; }
internal static XPathExpression Compile(string xpath, NSResolver nsResolver, IStaticXsltContext ctx) { XPathParser parser = new XPathParser(ctx); CompiledExpression x = new CompiledExpression(xpath, parser.Compile(xpath)); x.SetContext(nsResolver); return(x); }
public object EvaluateKey(IStaticXsltContext staticContext, BaseIterator iter, Expression nameExpr, Expression valueExpr) { QName name = GetKeyName(staticContext, iter, nameExpr); KeyIndexTable table = GetIndexTable(name); return(table.Evaluate(iter, valueExpr)); }
public XsltSystemProperty(FunctionArguments args, IStaticXsltContext ctx) : base(args) { if (args == null || args.Tail != null) { throw new XPathException("system-property takes 1 arg"); } this.arg0 = args.Arg; this.ctx = ctx; }
public bool MatchesKey(XPathNavigator nav, IStaticXsltContext staticContext, string name, string value) { QName qname = XslNameUtil.FromString(name, staticContext); KeyIndexTable table = GetIndexTable(qname); return(table.Matches(nav, value, this)); }
public XsltElementAvailable(FunctionArguments args, IStaticXsltContext ctx) : base(args) { if (args == null || args.Tail != null) { throw new XPathException("element-available takes 1 arg"); } this.arg0 = args.Arg; this.ctx = ctx; }
public NodeNameTest(Axes axis, XmlQualifiedName name, IStaticXsltContext ctx) : base(axis) { if (ctx != null) { name = ctx.LookupQName(name.ToString()); this.resolvedName = true; } this._name = name; }
public ExprVariable(XmlQualifiedName name, IStaticXsltContext ctx) { if (ctx != null) { name = ctx.LookupQName(name.ToString()); this.resolvedName = true; } this._name = name; }
public XsltKey(FunctionArguments args, IStaticXsltContext ctx) : base(args) { staticContext = ctx; if (args == null || args.Tail == null) { throw new XPathException("key takes 2 args"); } arg0 = args.Arg; arg1 = args.Tail.Arg; }
public ExprFunctionCall(XmlQualifiedName name, FunctionArguments args, IStaticXsltContext ctx) { if (ctx != null) { name = ctx.LookupQName(name.ToString()); this.resolvedName = true; } this._name = name; if (args != null) { args.ToArrayList(this._args); } }
public static XmlQualifiedName FromString(string name, IStaticXsltContext ctx) { int num = name.IndexOf(':'); if (num > 0) { return(new XmlQualifiedName(name.Substring(num + 1), ctx.LookupNamespace(name.Substring(0, num)))); } if (num < 0) { return(new XmlQualifiedName(name, string.Empty)); } throw new ArgumentException("Invalid name: " + name); }
public XsltFormatNumber(FunctionArguments args, IStaticXsltContext ctx) : base(args) { if (args == null || args.Tail == null || (args.Tail.Tail != null && args.Tail.Tail.Tail != null)) { throw new XPathException("format-number takes 2 or 3 args"); } this.arg0 = args.Arg; this.arg1 = args.Tail.Arg; if (args.Tail.Tail != null) { this.arg2 = args.Tail.Tail.Arg; this.ctx = ctx; } }
public static void Set (string xpath, IStaticXsltContext ctx, XPathExpression exp) { object ctxkey = ctx != null ? ctx : dummy; Hashtable table = null; lock (cache_lock) { WeakReference wr = table_per_ctx [ctxkey] as WeakReference; if (wr != null && wr.IsAlive) table = (Hashtable) wr.Target; if (table == null) { table = new Hashtable (); table_per_ctx [ctxkey] = new WeakReference (table); } table [xpath] = new WeakReference (exp); } }
public static QName FromString(string name, IStaticXsltContext ctx) { int colon = name.IndexOf(':'); if (colon > 0) { return(new QName(name.Substring(colon + 1), ctx.LookupNamespace(name.Substring(0, colon)))); } else if (colon < 0) { // Default namespace is not used for unprefixed names. return(new QName(name, "")); } else { throw new ArgumentException("Invalid name: " + name); } }
private XmlQualifiedName GetKeyName(IStaticXsltContext staticContext, BaseIterator iter, Expression nameExpr) { XmlQualifiedName xmlQualifiedName; if (nameExpr.HasStaticValue) { xmlQualifiedName = (XmlQualifiedName)this.keyNameCache[nameExpr]; if (xmlQualifiedName == null) { xmlQualifiedName = XslNameUtil.FromString(nameExpr.EvaluateString(iter), staticContext); this.keyNameCache[nameExpr] = xmlQualifiedName; } } else { xmlQualifiedName = XslNameUtil.FromString(nameExpr.EvaluateString(iter), this); } return(xmlQualifiedName); }
public static void Set(string xpath, IStaticXsltContext ctx, XPathExpression exp) { object key = (ctx == null) ? ExpressionCache.dummy : ctx; Hashtable hashtable = null; object obj = ExpressionCache.cache_lock; lock (obj) { WeakReference weakReference = ExpressionCache.table_per_ctx[key] as WeakReference; if (weakReference != null && weakReference.IsAlive) { hashtable = (Hashtable)weakReference.Target; } if (hashtable == null) { hashtable = new Hashtable(); ExpressionCache.table_per_ctx[key] = new WeakReference(hashtable); } hashtable[xpath] = new WeakReference(exp); } }
private QName GetKeyName(IStaticXsltContext staticContext, BaseIterator iter, Expression nameExpr) { QName name = null; if (nameExpr.HasStaticValue) { name = (QName)keyNameCache [nameExpr]; if (name == null) { name = XslNameUtil.FromString( nameExpr.EvaluateString(iter), staticContext); keyNameCache [nameExpr] = name; } } else { name = XslNameUtil.FromString( nameExpr.EvaluateString(iter), this); } return(name); }
public static XPathExpression Get (string xpath, IStaticXsltContext ctx) { object ctxkey = ctx != null ? ctx : dummy; lock (cache_lock) { WeakReference wr = table_per_ctx [ctxkey] as WeakReference; if (wr == null) return null; Hashtable table = wr.Target as Hashtable; if (table == null) { table_per_ctx [ctxkey] = null; return null; } wr = table [xpath] as WeakReference; if (wr != null) { XPathExpression e = wr.Target as XPathExpression; if (e != null) return e; table [xpath] = null; } } return null; }
public XsltFunctionAvailable (FunctionArguments args, IStaticXsltContext ctx) : base (args) { if (args == null || args.Tail != null) throw new XPathException ("element-available takes 1 arg"); arg0 = args.Arg; this.ctx = ctx; }
public static QName FromString (string name, IStaticXsltContext ctx) { int colon = name.IndexOf (':'); if (colon > 0) return new QName (name.Substring (colon + 1), ctx.LookupNamespace (name.Substring (0, colon))); else if (colon < 0) // Default namespace is not used for unprefixed names. return new QName (name, ""); else throw new ArgumentException ("Invalid name: " + name); }
public XsltFormatNumber (FunctionArguments args, IStaticXsltContext ctx) : base (args) { if (args == null || args.Tail == null || (args.Tail.Tail != null && args.Tail.Tail.Tail != null)) throw new XPathException ("format-number takes 2 or 3 args"); arg0 = args.Arg; arg1 = args.Tail.Arg; if (args.Tail.Tail != null) { arg2= args.Tail.Tail.Arg; this.ctx = ctx; } }
public bool MatchesKey (XPathNavigator nav, IStaticXsltContext staticContext, string name, string value) { QName qname = XslNameUtil.FromString (name, staticContext); KeyIndexTable table = GetIndexTable (qname); return table.Matches (nav, value, this); }
internal static XPathExpression Compile(string xpath, IXmlNamespaceResolver nsmgr, IStaticXsltContext ctx) { XPathParser xpathParser = new XPathParser(ctx); CompiledExpression compiledExpression = new CompiledExpression(xpath, xpathParser.Compile(xpath)); compiledExpression.SetContext(nsmgr); return(compiledExpression); }
public ExprVariable (XmlQualifiedName name, IStaticXsltContext ctx) { if (ctx != null) { name = ctx.LookupQName (name.ToString ()); resolvedName = true; } _name = name; }
public ExprFunctionCall (XmlQualifiedName name, FunctionArguments args, IStaticXsltContext ctx) { if (ctx != null) { name = ctx.LookupQName (name.ToString ()); resolvedName = true; } _name = name; if (args != null) args.ToArrayList (_args); }
public object EvaluateKey (IStaticXsltContext staticContext, BaseIterator iter, Expression nameExpr, Expression valueExpr) { QName name = GetKeyName (staticContext, iter, nameExpr); KeyIndexTable table = GetIndexTable (name); return table.Evaluate (iter, valueExpr); }
public static Expression Factory (XmlQualifiedName name, FunctionArguments args, IStaticXsltContext ctx) { if (name.Namespace != null && name.Namespace != "") return new ExprFunctionCall (name, args, ctx); switch (name.Name) { case "last": return new XPathFunctionLast (args); case "position": return new XPathFunctionPosition (args); case "count": return new XPathFunctionCount (args); case "id": return new XPathFunctionId (args); case "local-name": return new XPathFunctionLocalName (args); case "namespace-uri": return new XPathFunctionNamespaceUri (args); case "name": return new XPathFunctionName (args); case "string": return new XPathFunctionString (args); case "concat": return new XPathFunctionConcat (args); case "starts-with": return new XPathFunctionStartsWith (args); case "contains": return new XPathFunctionContains (args); case "substring-before": return new XPathFunctionSubstringBefore (args); case "substring-after": return new XPathFunctionSubstringAfter (args); case "substring": return new XPathFunctionSubstring (args); case "string-length": return new XPathFunctionStringLength (args); case "normalize-space": return new XPathFunctionNormalizeSpace (args); case "translate": return new XPathFunctionTranslate (args); case "boolean": return new XPathFunctionBoolean (args); case "not": return new XPathFunctionNot (args); case "true": return new XPathFunctionTrue (args); case "false": return new XPathFunctionFalse (args); case "lang": return new XPathFunctionLang (args); case "number": return new XPathFunctionNumber (args); case "sum": return new XPathFunctionSum (args); case "floor": return new XPathFunctionFloor (args); case "ceiling": return new XPathFunctionCeil (args); case "round": return new XPathFunctionRound (args); } return new ExprFunctionCall (name, args, ctx); }
public XsltKey (FunctionArguments args, IStaticXsltContext ctx) : base (args) { staticContext = ctx; if (args == null || args.Tail == null) throw new XPathException ("key takes 2 args"); arg0 = args.Arg; arg1 = args.Tail.Arg; }
public XsltSystemProperty (FunctionArguments args, IStaticXsltContext ctx) : base (args) { if (args == null || args.Tail != null) throw new XPathException ("system-property takes 1 arg"); arg0 = args.Arg; this.ctx = ctx; }
public static Expression Factory(XmlQualifiedName name, FunctionArguments args, IStaticXsltContext ctx) { if (name.Namespace != null && name.Namespace != string.Empty) { return(new ExprFunctionCall(name, args, ctx)); } string name2 = name.Name; switch (name2) { case "last": return(new XPathFunctionLast(args)); case "position": return(new XPathFunctionPosition(args)); case "count": return(new XPathFunctionCount(args)); case "id": return(new XPathFunctionId(args)); case "local-name": return(new XPathFunctionLocalName(args)); case "namespace-uri": return(new XPathFunctionNamespaceUri(args)); case "name": return(new XPathFunctionName(args)); case "string": return(new XPathFunctionString(args)); case "concat": return(new XPathFunctionConcat(args)); case "starts-with": return(new XPathFunctionStartsWith(args)); case "contains": return(new XPathFunctionContains(args)); case "substring-before": return(new XPathFunctionSubstringBefore(args)); case "substring-after": return(new XPathFunctionSubstringAfter(args)); case "substring": return(new XPathFunctionSubstring(args)); case "string-length": return(new XPathFunctionStringLength(args)); case "normalize-space": return(new XPathFunctionNormalizeSpace(args)); case "translate": return(new XPathFunctionTranslate(args)); case "boolean": return(new XPathFunctionBoolean(args)); case "not": return(new XPathFunctionNot(args)); case "true": return(new XPathFunctionTrue(args)); case "false": return(new XPathFunctionFalse(args)); case "lang": return(new XPathFunctionLang(args)); case "number": return(new XPathFunctionNumber(args)); case "sum": return(new XPathFunctionSum(args)); case "floor": return(new XPathFunctionFloor(args)); case "ceiling": return(new XPathFunctionCeil(args)); case "round": return(new XPathFunctionRound(args)); } return(new ExprFunctionCall(name, args, ctx)); }
public NodeNameTest (Axes axis, XmlQualifiedName name, IStaticXsltContext ctx) : base (axis) { if (ctx != null) { name = ctx.LookupQName (name.ToString ()); resolvedName = true; } _name = name; }
private QName GetKeyName (IStaticXsltContext staticContext, BaseIterator iter, Expression nameExpr) { QName name = null; if (nameExpr.HasStaticValue) { name = (QName) keyNameCache [nameExpr]; if (name == null) { name = XslNameUtil.FromString ( nameExpr.EvaluateString (iter), staticContext); keyNameCache [nameExpr] = name; } } else name = XslNameUtil.FromString ( nameExpr.EvaluateString (iter), this); return name; }