/// <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); }
/// <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; }