2 // XslProcessingInstruction.cs
5 // Ben Maurer (bmaurer@users.sourceforge.net)
6 // Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
9 // (C) 2003 Atsushi Enomoto
13 using System.Collections;
15 using System.Xml.XPath;
19 namespace Mono.Xml.Xsl.Operations {
20 public class XslProcessingInstruction : XslCompiledElement {
24 public XslProcessingInstruction (Compiler c) : base (c) {}
26 protected override void Compile (Compiler c)
28 name = c.ParseAvtAttribute ("name");
29 if (!c.Input.MoveToFirstChild ()) return;
31 value = c.CompileTemplateContent ();
32 c.Input.MoveToParent ();
35 public override void Evaluate (XslTransformProcessor p)
37 StringWriter s = new StringWriter ();
38 //TODO: only text nodes allowed here, other nodes must be ignored along with any content,
39 //so TextOutputter is not really suitable here
40 Outputter outputter = new TextOutputter(s);
41 p.PushOutput (outputter);
45 p.Out.WriteProcessingInstruction (name.Evaluate (p), s.ToString ());