using Mono.Xml.Xsl;\r
\r
namespace System.Xml.Xsl {\r
+ internal class SimpleXsltDebugger\r
+ {\r
+ public void OnCompile (XPathNavigator style)\r
+ {\r
+ Console.Write ("Compiling: ");\r
+ PrintXPathNavigator (style);\r
+ Console.WriteLine ();\r
+ }\r
+\r
+ public void OnExecute (XPathNodeIterator currentNodeSet, XPathNavigator style, XsltContext xsltContext)\r
+ {\r
+ Console.Write ("Executing: ");\r
+ PrintXPathNavigator (style);\r
+ Console.WriteLine (" / NodeSet: (type {1}) {0} / XsltContext: {2}", currentNodeSet, currentNodeSet.GetType (), xsltContext);\r
+ }\r
+\r
+ void PrintXPathNavigator (XPathNavigator nav)\r
+ {\r
+ IXmlLineInfo li = nav as IXmlLineInfo;\r
+ li = li != null && li.HasLineInfo () ? li : null;\r
+ Console.Write ("({0}, {1}) element {2}", li != null ? li.LineNumber : 0, li != null ? li.LinePosition : 0, nav.Name);\r
+ }\r
+ }\r
+\r
+ [Obsolete]\r
public sealed class XslTransform {\r
\r
+ internal static readonly bool TemplateStackFrameError;\r
+ internal static readonly TextWriter TemplateStackFrameOutput;\r
+\r
+ static XslTransform ()\r
+ {\r
+ string env = Environment.GetEnvironmentVariable ("MONO_XSLT_STACK_FRAME");\r
+ switch (env) {\r
+ case "stdout":\r
+ TemplateStackFrameOutput = Console.Out;\r
+ break;\r
+ case "stderr":\r
+ TemplateStackFrameOutput = Console.Error;\r
+ break;\r
+ case "error":\r
+ TemplateStackFrameError = true;\r
+ break;\r
+ }\r
+ }\r
+\r
+ static object GetDefaultDebugger ()\r
+ {\r
+ string env = Environment.GetEnvironmentVariable ("MONO_XSLT_DEBUGGER");\r
+ if (env == null)\r
+ return null;\r
+ if (env == "simple")\r
+ return new SimpleXsltDebugger ();\r
+ object obj = Activator.CreateInstance (Type.GetType (env));\r
+ return obj;\r
+ }\r
+\r
+ public XslTransform ()\r
+ : this (GetDefaultDebugger ())\r
+ {\r
+ }\r
+\r
+ internal XslTransform (object debugger)\r
+ {\r
+ this.debugger = debugger;\r
+ }\r
+\r
+ object debugger;\r
CompiledStylesheet s;\r
XmlResolver xmlResolver = new XmlUrlResolver ();\r
\r
[MonoTODO] // FIXME: audit security check\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public XmlResolver XmlResolver {\r
set {\r
xmlResolver = value;\r
}\r
\r
#region Transform\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public XmlReader Transform (IXPathNavigable input, XsltArgumentList args)\r
{\r
return Transform (input.CreateNavigator (), args, xmlResolver);\r
}\r
\r
-#if NET_1_1\r
public XmlReader Transform (IXPathNavigable input, XsltArgumentList args, XmlResolver resolver)\r
-#else\r
- XmlReader Transform (IXPathNavigable input, XsltArgumentList args, XmlResolver resolver)\r
-#endif\r
{\r
return Transform (input.CreateNavigator (), args, resolver);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public XmlReader Transform (XPathNavigator input, XsltArgumentList args)\r
{\r
return Transform (input, args, xmlResolver);\r
}\r
-#if NET_1_1\r
+\r
public XmlReader Transform (XPathNavigator input, XsltArgumentList args, XmlResolver resolver)\r
-#else\r
- XmlReader Transform (XPathNavigator input, XsltArgumentList args, XmlResolver resolver)\r
-#endif\r
{\r
// todo: is this right?\r
MemoryStream stream = new MemoryStream ();\r
return new XmlTextReader (stream, XmlNodeType.Element, null);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output)\r
{\r
Transform (input.CreateNavigator (), args, output, xmlResolver);\r
}\r
-#if NET_1_1\r
+\r
public void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver)\r
-#else\r
- void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver)\r
-#endif\r
{\r
Transform (input.CreateNavigator (), args, output, resolver);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (IXPathNavigable input, XsltArgumentList args, Stream output)\r
{\r
Transform (input.CreateNavigator (), args, output, xmlResolver);\r
}\r
-#if NET_1_1\r
public void Transform (IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver)\r
-#else\r
- void Transform (IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver)\r
-#endif\r
{\r
Transform (input.CreateNavigator (), args, output, resolver);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output)\r
{\r
Transform (input.CreateNavigator (), args, output, xmlResolver);\r
}\r
-#if NET_1_1\r
+\r
public void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)\r
-#else\r
- void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)\r
-#endif\r
{\r
Transform (input.CreateNavigator (), args, output, resolver);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output)\r
{\r
Transform (input, args, output, xmlResolver);\r
}\r
-#if NET_1_1\r
+\r
public void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)\r
-#else\r
- void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)\r
-#endif\r
{\r
if (s == null)\r
throw new XsltException ("No stylesheet was loaded.", null);\r
\r
Outputter outputter = new GenericOutputter (output, s.Outputs, null);\r
- new XslTransformProcessor (s).Process (input, outputter, args, resolver);\r
+ new XslTransformProcessor (s, debugger).Process (input, outputter, args, resolver);\r
output.Flush ();\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (XPathNavigator input, XsltArgumentList args, Stream output)\r
{\r
Transform (input, args, output, xmlResolver); \r
}\r
-#if NET_1_1\r
public void Transform (XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)\r
-#else\r
- void Transform (XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)\r
-#endif\r
{\r
XslOutput xslOutput = (XslOutput)s.Outputs[String.Empty];\r
Transform (input, args, new StreamWriter (output, xslOutput.Encoding), resolver);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output)\r
{\r
Transform (input, args, output, xmlResolver);\r
}\r
-#if NET_1_1\r
+\r
public void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver)\r
-#else\r
- void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver)\r
-#endif\r
{\r
if (s == null)\r
throw new XsltException ("No stylesheet was loaded.", null);\r
\r
Outputter outputter = new GenericOutputter(output, s.Outputs, output.Encoding); \r
- new XslTransformProcessor (s).Process (input, outputter, args, resolver);\r
+ new XslTransformProcessor (s, debugger).Process (input, outputter, args, resolver);\r
outputter.Done ();\r
output.Flush ();\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete ("You should pass XmlResolver to Transform() method", false)]\r
-#endif\r
public void Transform (string inputfile, string outputfile)\r
{ \r
Transform (inputfile, outputfile, xmlResolver);\r
}\r
\r
-#if NET_1_1\r
public void Transform (string inputfile, string outputfile, XmlResolver resolver)\r
-#else\r
- void Transform (string inputfile, string outputfile, XmlResolver resolver)\r
-#endif\r
{\r
using (Stream s = new FileStream (outputfile, FileMode.Create, FileAccess.ReadWrite)) {\r
Transform(new XPathDocument (inputfile).CreateNavigator (), null, s, resolver);\r
}\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete("You should pass evidence.", false)]\r
-#endif\r
public void Load (XmlReader stylesheet)\r
{\r
Load (stylesheet, null, null);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete("You should pass evidence.", false)]\r
-#endif\r
public void Load (XmlReader stylesheet, XmlResolver resolver)\r
{\r
Load (stylesheet, resolver, null);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete("You should pass evidence.", false)]\r
-#endif\r
public void Load (XPathNavigator stylesheet)\r
{\r
Load (stylesheet, null, null);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete("You should pass evidence.", false)]\r
-#endif\r
public void Load (XPathNavigator stylesheet, XmlResolver resolver)\r
{\r
Load (stylesheet, resolver, null);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete("You should pass evidence.", false)]\r
-#endif\r
public void Load (IXPathNavigable stylesheet)\r
{\r
Load (stylesheet.CreateNavigator(), null);\r
}\r
\r
-#if NET_2_0\r
-#elif NET_1_1\r
- [Obsolete("You should pass evidence.", false)]\r
-#endif\r
public void Load (IXPathNavigable stylesheet, XmlResolver resolver)\r
{\r
Load (stylesheet.CreateNavigator(), resolver);\r
}\r
\r
// Introduced in .NET 1.1\r
-#if NET_1_1\r
public void Load (IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence)\r
-#else\r
- internal void Load (IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence)\r
-#endif\r
{\r
Load (stylesheet.CreateNavigator(), resolver, evidence);\r
}\r
\r
-#if NET_1_1\r
public void Load (XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence)\r
-#else\r
- internal void Load (XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence)\r
-#endif\r
{\r
- s = new Compiler ().Compile (stylesheet, resolver, evidence);\r
+ s = new Compiler (debugger).Compile (stylesheet, resolver, evidence);\r
}\r
\r
-#if NET_1_1\r
public void Load (XmlReader stylesheet, XmlResolver resolver, Evidence evidence)\r
-#else\r
- internal void Load (XmlReader stylesheet, XmlResolver resolver, Evidence evidence)\r
-#endif\r
{\r
Load (new XPathDocument (stylesheet, XmlSpace.Preserve).CreateNavigator (), resolver, evidence);\r
}\r