2003-08-18 Ben Maurer <bmaurer@users.sourceforge.net>
authorBen Maurer <benm@mono-cvs.ximian.com>
Tue, 19 Aug 2003 03:09:30 +0000 (03:09 -0000)
committerBen Maurer <benm@mono-cvs.ximian.com>
Tue, 19 Aug 2003 03:09:30 +0000 (03:09 -0000)
* XslOutput.cs: add support for encoding.
* ManagedXslTransform.cs, XslTransformImpl.cs: Add support for
encoding.

svn path=/trunk/mcs/; revision=17395

mcs/class/System.XML/Mono.Xml.Xsl/ChangeLog
mcs/class/System.XML/Mono.Xml.Xsl/XslOutput.cs
mcs/class/System.XML/System.Xml.Xsl/ChangeLog
mcs/class/System.XML/System.Xml.Xsl/ManagedXslTransform.cs
mcs/class/System.XML/System.Xml.Xsl/XslTransformImpl.cs

index 5b03f77e87d7fdaf55704ce6737eacbe3e2058b9..afdd062f4c86ddb477fd5722096d3b8fe127f996 100644 (file)
@@ -1,3 +1,7 @@
+2003-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * XslOutput.cs: add support for encoding.
+
 2003-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
 
        * *.cs: Support for xsl:output. (Oleg)
index 2f9600fe5e571f8274574bc6587e33b10f2faa9c..7c16717a964d32812eacc7158a7819ee1a7e160a 100644 (file)
@@ -17,7 +17,8 @@ using System.Collections;
 using System.Xml;\r
 using System.Xml.Schema;\r
 using System.Xml.XPath;\r
-using System.Xml.Xsl;\r
+using System.Xml.Xsl;
+using System.Text;
 \r
 namespace Mono.Xml.Xsl\r
 {\r
@@ -36,7 +37,7 @@ namespace Mono.Xml.Xsl
                QName customMethod;
                OutputMethod method = OutputMethod.XML; \r
                string version;\r
-               string encoding;\r
+               Encoding encoding = System.Text.Encoding.UTF8;\r
                bool omitXmlDeclaration;\r
                string standalone;\r
                string doctypePublic;\r
@@ -65,7 +66,7 @@ namespace Mono.Xml.Xsl
                        get { return version; }\r
                }\r
 \r
-               public string Encoding {\r
+               public Encoding Encoding {\r
                        get { return encoding; }\r
                }\r
 \r
@@ -166,7 +167,7 @@ namespace Mono.Xml.Xsl
 \r
                        att = nav.GetAttribute ("encoding", "");\r
                        if (att != String.Empty)\r
-                               this.encoding = att;\r
+                               this.encoding = System.Text.Encoding.GetEncoding (att);\r
 \r
                        att = nav.GetAttribute ("standalone", "");\r
                        if (att != String.Empty)\r
index 20708e7127134a5977994597fe4e46a85621b730..a0ca8b64eddd24b2fa2c76e5158ad5cfaa316d49 100644 (file)
@@ -1,3 +1,8 @@
+2003-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * ManagedXslTransform.cs, XslTransformImpl.cs: Add support for
+       encoding.
+
 2003-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
 
        * *.cs: Support for xsl:output. (Oleg)
index d6b11560f11e8e6003e1761775f940b6cd481436..d057d4cd8cf3d128d0b063d6ad4c55f63e81aaec 100644 (file)
@@ -43,12 +43,16 @@ namespace System.Xml.Xsl {
                        XslOutput xslOutput = (XslOutput)s.Style.Outputs[String.Empty];
                        if (xslOutput == null) {
                                //No xsl:output - subject to output method autodetection, XML for a while
-                               Transform(input, args, new XmlTextWriter(output), resolver);
+                               XmlWriter w = new XmlTextWriter(output);
+                               Transform(input, args, w, resolver);
+                               w.Close ();
                                return;
                        }                               
                        switch (xslOutput.Method) {
                                case OutputMethod.XML:
-                                       Transform(input, args, new XmlTextWriter(output), resolver);
+                                       XmlWriter w = new XmlTextWriter(output);
+                                       Transform(input, args, w, resolver);
+                                       w.Close ();
                                        break;
                                case OutputMethod.HTML:
                                        throw new NotImplementedException("HTML output method is not implemented yet.");
@@ -59,5 +63,14 @@ namespace System.Xml.Xsl {
                                        throw new NotImplementedException("Custom output method is not implemented yet.");
                        }
                }
+               
+               public override void Transform (XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)
+               {
+                       XslOutput xslOutput = (XslOutput)s.Style.Outputs[String.Empty];
+                       if (xslOutput == null)
+                               Transform (input, args, new StreamWriter (output), resolver);
+                       else
+                               Transform (input, args, new StreamWriter (output, xslOutput.Encoding), resolver);
+               }
        }
 }
index 9021663f611a00a16e7251eb0e10b1cf5cd44be7..3754792c092bee7fab018f2ef229fd22a072bd33 100644 (file)
@@ -31,13 +31,16 @@ namespace System.Xml.Xsl {
                public abstract void Load (XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence); 
 
                public abstract void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver);
-
                public abstract void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver);
+               public virtual void Transform (XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)
+               {
+                       Transform (input, args, new StreamWriter (output), resolver);
+               }
 
                public virtual void Transform (string inputfile, string outputfile, XmlResolver resolver)
                {
-                       using (StreamWriter w = new StreamWriter (outputfile)) {
-                               Transform(new XPathDocument (inputfile).CreateNavigator (), null, w, resolver);
+                       using (Stream s =  new FileStream (outputfile, FileMode.Create, FileAccess.ReadWrite)) {
+                               Transform(new XPathDocument (inputfile).CreateNavigator (), null, s, resolver);
                        }
                }
        }