switch (p.CurrentNode.NodeType)
{
case XPathNodeType.Root:
+ if (p.Out.CanProcessAttributes && useAttributeSets != null)
+ foreach (XmlQualifiedName s in useAttributeSets)
+ p.ResolveAttributeSet (s).Evaluate (p);
+
if (children != null) children.Evaluate (p);
break;
case XPathNodeType.Element:
+ bool cdataStarted = false;
+ if (!p.InsideCDataElement && p.PushCDataState (p.CurrentNode.LocalName, p.CurrentNode.NamespaceURI))
+ cdataStarted = true;
p.Out.WriteStartElement (p.CurrentNode.Prefix, p.CurrentNode.LocalName, p.CurrentNode.NamespaceURI);
+ p.TryStylesheetNamespaceOutput (null);
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);
- p.Out.WriteEndElement ();
+
+ p.Out.WriteFullEndElement ();
+ if (cdataStarted)
+ p.PopCDataState ();
break;
case XPathNodeType.Attribute:
p.Out.WriteAttributeString (p.CurrentNode.Prefix, p.CurrentNode.LocalName, p.CurrentNode.NamespaceURI, p.CurrentNode.Value);