+2003-08-21 Ben Maurer <bmaurer@users.sourceforge.net>
+
+ * Compiler.cs, XsltCompiledContext.cs, XslTransformProcessorcs:
+ Fix up namespace handeling
+
2003-08-20 Ben Maurer <bmaurer@users.sourceforge.net>
* Compiler.cs, XslStylesheet.cs, XsltCompiledContext.cs: Stubs for
if (v.IsEvaluated (p))
return v;
}
-
return null;
}
}
public void AddExpression (XPathExpression e, Compiler c)
{
exprToVarCtx [e] = c.CurrentVariableScope;
- exprToDocument [e] = c.Input.Clone ();
+
+ XPathNavigator nsScope = c.Input.Clone ();
+ if (nsScope.NodeType == XPathNodeType.Attribute)
+ nsScope.MoveToParent ();
+
+ exprToDocument [e] = nsScope;
}
public void AddSort (XPathExpression e, Sort s)
{
int colon = name.IndexOf (':');
if (colon > 0)
- return new QName (name.Substring (colon, name.Length - colon), current.GetNamespace (name.Substring (0, colon)));
+ return new QName (name.Substring (colon+ 1), current.GetNamespace (name.Substring (0, colon)));
else if (colon < 0)
// Default namespace is not used for unprefixed names.
return new QName (name, "");
{
int colon = name.IndexOf (':');
if (colon > 0)
- return new QName (name.Substring (colon, name.Length - colon), ctx.LookupNamespace (name.Substring (0, colon)));
+ 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, "");
public void Process (XPathNavigator root, Outputter outputtter, XsltArgumentList args, XmlResolver resolver)
{
- foreach (XslGlobalVariable v in CompiledStyle.Variables.Values) {
- if (v is XslGlobalParam) {
- object p = args.GetParam(v.Name.Name, v.Name.Namespace);
- if (p != null)
- ((XslGlobalParam)v).Override (this, p);
+ if (args != null)
+ foreach (XslGlobalVariable v in CompiledStyle.Variables.Values) {
+ if (v is XslGlobalParam) {
+ object p = args.GetParam(v.Name.Name, v.Name.Namespace);
+ if (p != null)
+ ((XslGlobalParam)v).Override (this, p);
+ }
}
- }
this.args = args;
this.root = root;
public override System.Xml.Xsl.IXsltContextVariable ResolveVariable(string prefix, string name)
{
+ QName varName = new QName (name, LookupNamespace (prefix));
+
if (v != null) {
- XslGeneralVariable var = v.Resolve (p, new QName (name));
+ XslGeneralVariable var = v.Resolve (p, varName);
if (var != null)
return var;
}
- return p.CompiledStyle.ResolveVariable (new QName (name));
+ return p.CompiledStyle.ResolveVariable (varName);
}
public override int CompareDocument (string baseUri, string nextBaseUri) { throw new NotImplementedException (); }