Provides the evaluation context for fast execution and custom variables resolution.
This class is responsible for resolving variables during dynamic expression execution.

Discussed in http://weblogs.asp.net/cazzu/archive/2003/10/07/30888.aspx

Author: Daniel Cazzulino, blog

Inheritance: System.Xml.Xsl.XsltContext
Esempio n. 1
0
        /// <summary>
        /// Sets up the context for expression execution.
        /// </summary>
        private static XmlNamespaceManager PrepareContext(XPathNavigator source,
                                                          XmlNamespaceManager context, XmlPrefix[] prefixes, XPathVariable[] variables)
        {
            XmlNamespaceManager ctx = context;

            // If we have variables, we need the dynamic context.
            if (variables != null)
            {
                DynamicContext dyn = ctx != null ? new DynamicContext(ctx) : new DynamicContext();

                // Add the variables we received.
                foreach (XPathVariable var in variables)
                {
                    dyn.AddVariable(var.Name, var.Value);
                }

                ctx = dyn;
            }

            // If prefixes were added, append them to context.
            if (prefixes != null)
            {
                if (ctx == null)
                {
                    ctx = new XmlNamespaceManager(source.NameTable);
                }

                foreach (XmlPrefix prefix in prefixes)
                {
                    ctx.AddNamespace(prefix.Prefix, prefix.NamespaceUri);
                }
            }

            return(ctx);
        }
Esempio n. 2
0
		/// <summary>
		/// Sets up the context for expression execution.
		/// </summary>
		private static XmlNamespaceManager PrepareContext(XPathNavigator source,
			XmlNamespaceManager context, XmlPrefix[] prefixes, XPathVariable[] variables)
		{
			XmlNamespaceManager ctx = context;

			// If we have variables, we need the dynamic context. 
			if (variables != null)
			{
				DynamicContext dyn;
				if (ctx != null)
					dyn = new DynamicContext(ctx);
				else
					dyn = new DynamicContext();

				// Add the variables we received.
				foreach (XPathVariable var in variables)
				{
					dyn.AddVariable(var.Name, var.Value);
				}

				ctx = dyn;
			}

			// If prefixes were added, append them to context.
			if (prefixes != null)
			{
				if (ctx == null) ctx = new XmlNamespaceManager(source.NameTable);
				foreach (XmlPrefix prefix in prefixes)
					ctx.AddNamespace(prefix.Prefix, prefix.NamespaceURI);
			}

			return ctx;
		}