Example #1
0
        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));
        }
Example #2
0
        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);
        }
Example #4
0
		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;
		}
Example #5
0
        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);
        }
Example #6
0
        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));
        }
Example #7
0
 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;
 }
Example #8
0
        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;
 }
Example #10
0
 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;
 }
Example #12
0
 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;
 }
Example #13
0
 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;
     }
 }
Example #16
0
		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);
			}
		}
Example #17
0
        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);
            }
        }
Example #18
0
        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);
            }
        }
Example #20
0
        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);
        }
Example #21
0
		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;
		}
Example #23
0
		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;
			}
		}
Example #25
0
		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);
		}
Example #26
0
        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);
        }
Example #27
0
		public ExprVariable (XmlQualifiedName name, IStaticXsltContext ctx)
		{
			if (ctx != null) {
				name = ctx.LookupQName (name.ToString ());
				resolvedName = true;
			}
			
			_name = name;
		}
Example #28
0
		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);
		}
Example #29
0
		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);
		}
Example #30
0
		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;
		}
Example #33
0
        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));
        }
Example #34
0
		public NodeNameTest (Axes axis, XmlQualifiedName name, IStaticXsltContext ctx) : base (axis)
		{
			if (ctx != null) {
				name = ctx.LookupQName (name.ToString ());
				resolvedName = true;
			}
			_name = name;
		}
Example #35
0
		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;
		}