* XslAttribute.cs : Name verification.
* XslElement.cs : Name verification. Consider IsEmptyElement.
* XslCopy.cs : copy namespace nodes too.
svn path=/trunk/mcs/; revision=20322
+2003-11-21 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+
+ * XslAttribute.cs : Name verification.
+ * XslElement.cs : Name verification. Consider IsEmptyElement.
+ * XslCopy.cs : copy namespace nodes too.
+
2003-11-09 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
* XslAttribute.cs : namespace should be String.Empty if no specification
if (prefix == "xmlns")
prefix = String.Empty; // Should not be allowed.
+ XmlConvert.VerifyName (nm);
+
if (value == null)
p.Out.WriteAttributeString(prefix, nm, nmsp, "");
else {
if (useAttributeSets != null)
foreach (XmlQualifiedName s in useAttributeSets)
p.ResolveAttributeSet (s).Evaluate (p);
+
+ if (p.CurrentNode.MoveToFirstNamespace (XPathNamespaceScope.Local)) {
+ do {
+ p.Out.WriteNamespaceDecl (p.CurrentNode.LocalName, p.CurrentNode.Value);
+ } while (p.CurrentNode.MoveToNextNamespace (XPathNamespaceScope.Local));
+ p.CurrentNode.MoveToParent ();
+ }
if (children != null) children.Evaluate (p);
- if (p.CurrentNode.IsEmptyElement)
- p.Out.WriteEndElement ();
- else
- p.Out.WriteFullEndElement ();
+ p.Out.WriteFullEndElement ();
break;
case XPathNodeType.Attribute:
p.Out.WriteAttributeString (p.CurrentNode.Prefix, p.CurrentNode.LocalName, p.CurrentNode.NamespaceURI, p.CurrentNode.Value);
{
string nm, nmsp, localName, prefix;
- nm = calcName != null ? calcName : name.Evaluate (p);
+ localName = nm = calcName != null ? calcName : name.Evaluate (p);
nmsp = calcNs != null ? calcNs : ns != null ? ns.Evaluate (p) : null;
prefix = calcPrefix != null ? calcPrefix : String.Empty;
}
}
- p.Out.WriteStartElement (prefix, nm, nmsp);
+ XmlConvert.VerifyName (nm);
+
+ p.Out.WriteStartElement (prefix, localName, nmsp);
p.TryStylesheetNamespaceOutput ();
if (useAttributeSets != null)
if (value != null) value.Evaluate (p);
- p.Out.WriteFullEndElement ();
+ if (isEmptyElement && useAttributeSets == null)
+ p.Out.WriteEndElement ();
+ else
+ p.Out.WriteFullEndElement ();
}
}
}