1 // System.Xml.Xsl.XslTransform
\r
4 // Tim Coleman <tim@timcoleman.com>
\r
5 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
\r
7 // (C) Copyright 2002 Tim Coleman
\r
8 // (c) 2003 Ximian Inc. (http://www.ximian.com)
\r
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33 using System.Collections;
\r
36 using System.Runtime.InteropServices;
\r
37 using System.Security;
\r
38 using System.Security.Policy;
\r
39 using System.Xml.XPath;
\r
42 namespace System.Xml.Xsl {
\r
43 public sealed class XslTransform {
\r
45 CompiledStylesheet s;
\r
46 XmlResolver xmlResolver = new XmlUrlResolver ();
\r
48 [MonoTODO ("Security check.")]
\r
50 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
52 public XmlResolver XmlResolver {
\r
54 xmlResolver = value;
\r
60 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
62 public XmlReader Transform (IXPathNavigable input, XsltArgumentList args)
\r
64 return Transform (input.CreateNavigator (), args, xmlResolver);
\r
68 public XmlReader Transform (IXPathNavigable input, XsltArgumentList args, XmlResolver resolver)
\r
70 XmlReader Transform (IXPathNavigable input, XsltArgumentList args, XmlResolver resolver)
\r
73 return Transform (input.CreateNavigator (), args, resolver);
\r
77 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
79 public XmlReader Transform (XPathNavigator input, XsltArgumentList args)
\r
81 return Transform (input, args, xmlResolver);
\r
84 public XmlReader Transform (XPathNavigator input, XsltArgumentList args, XmlResolver resolver)
\r
86 XmlReader Transform (XPathNavigator input, XsltArgumentList args, XmlResolver resolver)
\r
89 // todo: is this right?
\r
90 MemoryStream stream = new MemoryStream ();
\r
91 Transform (input, args, new XmlTextWriter (stream, null), resolver);
\r
92 stream.Position = 0;
\r
93 return new XmlTextReader (stream);
\r
97 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
99 public void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output)
\r
101 Transform (input.CreateNavigator (), args, output, xmlResolver);
\r
104 public void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver)
\r
106 void Transform (IXPathNavigable input, XsltArgumentList args, TextWriter output, XmlResolver resolver)
\r
109 Transform (input.CreateNavigator (), args, output, resolver);
\r
113 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
115 public void Transform (IXPathNavigable input, XsltArgumentList args, Stream output)
\r
117 Transform (input.CreateNavigator (), args, output, xmlResolver);
\r
120 public void Transform (IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver)
\r
122 void Transform (IXPathNavigable input, XsltArgumentList args, Stream output, XmlResolver resolver)
\r
125 Transform (input.CreateNavigator (), args, output, resolver);
\r
129 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
131 public void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output)
\r
133 Transform (input.CreateNavigator (), args, output, xmlResolver);
\r
136 public void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
\r
138 void Transform (IXPathNavigable input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
\r
141 Transform (input.CreateNavigator (), args, output, resolver);
\r
145 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
147 public void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output)
\r
149 Transform (input, args, output, xmlResolver);
\r
152 public void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
\r
154 void Transform (XPathNavigator input, XsltArgumentList args, XmlWriter output, XmlResolver resolver)
\r
158 throw new XsltException ("No stylesheet was loaded.", null);
160 Outputter outputter = new GenericOutputter (output, s.Outputs, null);
161 new XslTransformProcessor (s).Process (input, outputter, args, resolver);
166 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
168 public void Transform (XPathNavigator input, XsltArgumentList args, Stream output)
\r
170 Transform (input, args, output, xmlResolver);
\r
173 public void Transform (XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)
\r
175 void Transform (XPathNavigator input, XsltArgumentList args, Stream output, XmlResolver resolver)
\r
178 XslOutput xslOutput = (XslOutput)s.Outputs[String.Empty];
179 Transform (input, args, new StreamWriter (output, xslOutput.Encoding), resolver);
\r
183 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
185 public void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output)
\r
187 Transform (input, args, output, xmlResolver);
\r
190 public void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver)
\r
192 void Transform (XPathNavigator input, XsltArgumentList args, TextWriter output, XmlResolver resolver)
\r
195 Outputter outputter = new GenericOutputter(output, s.Outputs, output.Encoding);
196 new XslTransformProcessor (s).Process (input, outputter, args, resolver);
202 [Obsolete ("You should pass XmlResolver to Transform() method", false)]
\r
204 public void Transform (string inputfile, string outputfile)
\r
206 Transform (inputfile, outputfile, xmlResolver);
\r
210 public void Transform (string inputfile, string outputfile, XmlResolver resolver)
\r
212 void Transform (string inputfile, string outputfile, XmlResolver resolver)
\r
215 using (Stream s = new FileStream (outputfile, FileMode.Create, FileAccess.ReadWrite)) {
216 Transform(new XPathDocument (inputfile).CreateNavigator (), null, s, resolver);
222 public void Load (string url)
\r
227 public void Load (string url, XmlResolver resolver)
\r
229 XmlResolver res = resolver;
231 res = new XmlUrlResolver ();
232 Uri uri = res.ResolveUri (null, url);
233 using (Stream s = res.GetEntity (uri, null, typeof (Stream)) as Stream) {
234 XmlTextReader xtr = new XmlTextReader (uri.ToString (), s);
235 xtr.XmlResolver = res;
236 XmlValidatingReader xvr = new XmlValidatingReader (xtr);
237 xvr.XmlResolver = res;
238 xvr.ValidationType = ValidationType.None;
239 Load (new XPathDocument (xvr, XmlSpace.Preserve).CreateNavigator (), resolver, null);
244 [Obsolete("You should pass evidence.", false)]
\r
246 public void Load (XmlReader stylesheet)
\r
248 Load (stylesheet, null, null);
\r
252 [Obsolete("You should pass evidence.", false)]
\r
254 public void Load (XmlReader stylesheet, XmlResolver resolver)
\r
256 Load (stylesheet, resolver, null);
\r
260 [Obsolete("You should pass evidence.", false)]
\r
262 public void Load (XPathNavigator stylesheet)
\r
264 Load (stylesheet, null, null);
\r
268 [Obsolete("You should pass evidence.", false)]
\r
270 public void Load (XPathNavigator stylesheet, XmlResolver resolver)
\r
272 Load (stylesheet, resolver, null);
\r
276 [Obsolete("You should pass evidence.", false)]
\r
278 public void Load (IXPathNavigable stylesheet)
\r
280 Load (stylesheet.CreateNavigator(), null);
\r
284 [Obsolete("You should pass evidence.", false)]
\r
286 public void Load (IXPathNavigable stylesheet, XmlResolver resolver)
\r
288 Load (stylesheet.CreateNavigator(), resolver);
\r
291 // Introduced in .NET 1.1
\r
293 public void Load (IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence)
\r
295 internal void Load (IXPathNavigable stylesheet, XmlResolver resolver, Evidence evidence)
\r
298 Load (stylesheet.CreateNavigator(), resolver, evidence);
\r
302 public void Load (XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence)
\r
304 internal void Load (XPathNavigator stylesheet, XmlResolver resolver, Evidence evidence)
\r
307 s = new Compiler ().Compile (stylesheet, resolver, evidence);
\r
311 public void Load (XmlReader stylesheet, XmlResolver resolver, Evidence evidence)
\r
313 internal void Load (XmlReader stylesheet, XmlResolver resolver, Evidence evidence)
\r
316 Load (new XPathDocument (stylesheet, XmlSpace.Preserve).CreateNavigator (), resolver, evidence);
\r