Merge pull request #960 from ermshiperete/ShowHelp
[mono.git] / mcs / class / System.XML / System.Xml.Xsl / XslCompiledTransform.cs
index f7f0fc284207950e34518e34f42a6171d84862a5..dbcb807c309650c62efd4eae20ad41562c17c111 100644 (file)
@@ -27,8 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.CodeDom.Compiler;
 using System.Collections;
@@ -47,8 +45,11 @@ namespace System.Xml.Xsl
        public sealed class XslCompiledTransform
        {
                bool enable_debug;
+               object debugger;
                CompiledStylesheet s;
-               TempFileCollection temporary_files;
+#if !MOBILE
+//             TempFileCollection temporary_files;
+#endif
                XmlWriterSettings output_settings = new XmlWriterSettings ();
 
                public XslCompiledTransform ()
@@ -59,6 +60,9 @@ namespace System.Xml.Xsl
                public XslCompiledTransform (bool enableDebug)
                {
                        enable_debug = enableDebug;
+                       if (enable_debug)
+                               debugger = new NoOperationDebugger ();
+                       output_settings.ConformanceLevel = ConformanceLevel.Fragment;
                }
 
                [MonoTODO]
@@ -66,85 +70,85 @@ namespace System.Xml.Xsl
                        get { return output_settings; }
                }
 
+#if !MOBILE
                [MonoTODO]
                public TempFileCollection TemporaryFiles {
-                       get { return temporary_files; }
+                       get { return null; /*temporary_files;*/ }
                }
+#endif
 
                #region Transform
 
-               public void Transform (string inputfile, string outputfile)
+               public void Transform (string inputUri, string resultsFile)
                {
-                       using (XmlReader reader = XmlReader.Create (inputfile)) {
-                               using (XmlWriter writer = XmlWriter.Create (outputfile, output_settings)) {
-                                       Transform (reader, writer);
-                               }
+                       using (Stream outStream = File.Create (resultsFile)) {
+                               Transform (new XPathDocument (inputUri, XmlSpace.Preserve), null, outStream);
                        }
                }
 
-               public void Transform (string inputfile, XmlWriter output)
+               public void Transform (string inputUri, XmlWriter results)
                {
-                       Transform (inputfile, null, output);
+                       Transform (inputUri, null, results);
                }
 
-               public void Transform (string inputfile, XsltArgumentList args, Stream output)
+               public void Transform (string inputUri, XsltArgumentList arguments, Stream results)
                {
-                       Transform (new XPathDocument (inputfile), args, output);
+                       Transform (new XPathDocument (inputUri, XmlSpace.Preserve), arguments, results);
                }
 
-               public void Transform (string inputfile, XsltArgumentList args, TextWriter output)
+               public void Transform (string inputUri, XsltArgumentList arguments, TextWriter results)
                {
-                       Transform (new XPathDocument (inputfile), args, output);
+                       Transform (new XPathDocument (inputUri, XmlSpace.Preserve), arguments, results);
                }
 
-               public void Transform (string inputfile, XsltArgumentList args, XmlWriter output)
+               public void Transform (string inputUri, XsltArgumentList arguments, XmlWriter results)
                {
-                       Transform (new XPathDocument (inputfile), args, output);
+                       Transform (new XPathDocument (inputUri, XmlSpace.Preserve), arguments, results);
                }
 
-               public void Transform (XmlReader reader, XmlWriter output)
+               public void Transform (XmlReader input, XmlWriter results)
                {
-                       Transform (reader, null, output);
+                       Transform (input, null, results);
                }
 
-               public void Transform (XmlReader reader, XsltArgumentList args, Stream output)
+               public void Transform (XmlReader input, XsltArgumentList arguments, Stream results)
                {
-                       Transform (new XPathDocument (reader), args, output);
+                       Transform (new XPathDocument (input, XmlSpace.Preserve), arguments, results);
                }
 
-               public void Transform (XmlReader reader, XsltArgumentList args, TextWriter output)
+               public void Transform (XmlReader input, XsltArgumentList arguments, TextWriter results)
                {
-                       Transform (new XPathDocument (reader), args, output);
+                       Transform (new XPathDocument (input, XmlSpace.Preserve), arguments, results);
                }
 
-               public void Transform (XmlReader reader, XsltArgumentList args, XmlWriter output)
+               public void Transform (XmlReader input, XsltArgumentList arguments, XmlWriter results)
                {
-                       Transform (reader, args, output, null);
+                       Transform (input, arguments, results, null);
                }
 
-               public void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output)
+               public void Transform (IXPathNavigable input, XsltArgumentList arguments, TextWriter results)
                {
-                       Transform (input.CreateNavigator (), args, output);
+                       Transform (input.CreateNavigator (), arguments, results);
                }
 
-               public void Transform (IXPathNavigable input, XsltArgumentList args, Stream output)
+               public void Transform (IXPathNavigable input, XsltArgumentList arguments, Stream results)
                {
-                       Transform (input.CreateNavigator (), args, output);
+                       Transform (input.CreateNavigator (), arguments, results);
                }
 
-               public void Transform (IXPathNavigable input, XmlWriter output)
+               public void Transform (IXPathNavigable input, XmlWriter results)
                {
-                       Transform (input, null, output);
+                       Transform (input, null, results);
                }
 
-               public void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output)
+               public void Transform (IXPathNavigable input, XsltArgumentList arguments, XmlWriter results)
                {
-                       Transform (input.CreateNavigator (), args, output, null);
+                       Transform (input.CreateNavigator (), arguments, results, null);
                }
 
-               public void Transform (XmlReader input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
+               public void Transform (XmlReader input, XsltArgumentList arguments, XmlWriter results, XmlResolver documentResolver)
                {
-                       Transform (new XPathDocument (input).CreateNavigator (), args, output, resolver);
+                       Transform (new XPathDocument (input, XmlSpace.Preserve).CreateNavigator (), arguments, results, documentResolver);
                }
 
                void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
@@ -153,7 +157,7 @@ namespace System.Xml.Xsl
                                throw new XsltException ("No stylesheet was loaded.", null);
 
                        Outputter outputter = new GenericOutputter (output, s.Outputs, null);
-                       new XslTransformProcessor (s).Process (input, outputter, args, resolver);
+                       new XslTransformProcessor (s, debugger).Process (input, outputter, args, resolver);
                        output.Flush ();
                }
 
@@ -169,7 +173,7 @@ namespace System.Xml.Xsl
                                throw new XsltException ("No stylesheet was loaded.", null);
 
                        Outputter outputter = new GenericOutputter(output, s.Outputs, output.Encoding);
-                       new XslTransformProcessor (s).Process (input, outputter, args, null);
+                       new XslTransformProcessor (s, debugger).Process (input, outputter, args, null);
                        outputter.Done ();
                        output.Flush ();
                }
@@ -191,9 +195,9 @@ namespace System.Xml.Xsl
                        return xvr;
                }
 
-               public void Load (string url)
+               public void Load (string stylesheetUri)
                {
-                       using (XmlReader r = GetXmlReader (url)) {
+                       using (XmlReader r = GetXmlReader (stylesheetUri)) {
                                Load (r);
                        }
                }
@@ -208,28 +212,46 @@ namespace System.Xml.Xsl
                        Load (stylesheet.CreateNavigator(), null, null);
                }
 
-               public void Load (IXPathNavigable stylesheet, XsltSettings settings, XmlResolver resolver)
+               public void Load (IXPathNavigable stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
                {
-                       Load (stylesheet.CreateNavigator(), settings, resolver);
+                       Load (stylesheet.CreateNavigator(), settings, stylesheetResolver);
                }
 
-               public void Load (XmlReader stylesheet, XsltSettings settings, XmlResolver resolver)
+               public void Load (XmlReader stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
                {
-                       Load (new XPathDocument (stylesheet).CreateNavigator (), settings, resolver);
+                       Load (new XPathDocument (stylesheet, XmlSpace.Preserve).CreateNavigator (), settings, stylesheetResolver);
                }
 
-               public void Load (string stylesheet, XsltSettings settings, XmlResolver resolver)
+               public void Load (string stylesheetUri, XsltSettings settings, XmlResolver stylesheetResolver)
                {
-                       Load (new XPathDocument (stylesheet).CreateNavigator (), settings, resolver);
+                       Load (new XPathDocument (stylesheetUri, XmlSpace.Preserve).CreateNavigator (), settings, stylesheetResolver);
                }
 
                private void Load (XPathNavigator stylesheet,
-                       XsltSettings settings, XmlResolver resolver)
+                       XsltSettings settings, XmlResolver stylesheetResolver)
                {
-                       s = new Compiler ().Compile (stylesheet, resolver, null);
+                       s = new Compiler (debugger, false).Compile (stylesheet, stylesheetResolver, null);
                }
 
                #endregion
        }
+
+               class NoOperationDebugger
+               {
+                       protected void OnCompile (XPathNavigator input)
+                       {
+                       }
+
+                       protected void OnExecute (XPathNodeIterator currentNodeset, XPathNavigator style, XsltContext context)
+                       {
+                               //ShowLocationInTrace (style);
+                       }
+/*
+                       string ShowLocationInTrace (XPathNavigator style)
+                       {
+                               IXmlLineInfo li = style as IXmlLineInfo;
+                               return li != null ? String.Format ("at {0} ({1},{2})", style.BaseURI, li.LineNumber, li.LinePosition) : "(no debug info available)";
+                       }
+*/
+               }
 }
-#endif