From: Oleg T. <he...@us...> - 2005-11-14 21:35:56
|
Update of /cvsroot/mvp-xml/Common/v2/src/Xsl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3238/v2/src/Xsl Modified Files: MvpXslTransform.cs XslReader.cs Log Message: Index: MvpXslTransform.cs =================================================================== RCS file: /cvsroot/mvp-xml/Common/v2/src/Xsl/MvpXslTransform.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- MvpXslTransform.cs 12 Nov 2005 21:28:59 -0000 1.1 +++ MvpXslTransform.cs 14 Nov 2005 21:35:48 -0000 1.2 @@ -1,24 +1,21 @@ +#region using using System; using System.IO; using System.Xml; using System.Xml.Xsl; -using System.Xml.XPath; +using System.Xml.XPath; +#endregion namespace Mvp.Xml.Common.Xsl { - public class MvpXslTransform { + + public class MvpXslTransform : IXmlTransform { XslCompiledTransform compiledTransform; + public MvpXslTransform(XslCompiledTransform transform) { if (transform == null) throw new ArgumentNullException("transform"); this.compiledTransform = transform; } -#if false - // do we want support old transform here as well? - XslTransform oldTransform; - public MvpXslTransform(XslTransform transform) { - if (transform == null) throw new ArgumentNullException("transform"); - this.oldTransform = transform; - } -#endif + public virtual void Transform(XmlInput defaulDocument, XsltArgumentList args, XmlOutput output) { XmlWriter xmlWriter = output.destination as XmlWriter; bool closeWriter = false; Index: XslReader.cs =================================================================== RCS file: /cvsroot/mvp-xml/Common/v2/src/Xsl/XslReader.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- XslReader.cs 14 Nov 2005 16:57:30 -0000 1.5 +++ XslReader.cs 14 Nov 2005 21:35:48 -0000 1.6 @@ -18,7 +18,9 @@ /// architectural and performance reasons the <see cref="XslCompiledTransform"/> /// class doesn't support transforming to an <see cref="XmlReader"/> as obsolete /// <see cref="XslTransform"/> class did and XslReader's goal is to - /// supplement such functionality.</para> + /// supplement such functionality.</para> + /// <para>XslReader has been developed and contributed to the Mvp.Xml project + /// by Sergey Dubinets (Microsoft XML Team).</para> /// </summary> /// <remarks> /// <para>XslReader can work in a singlethreaded (fully buffering) or a @@ -41,7 +43,10 @@ /// </para> /// <para>By default XslReader works in a multithreaded mode. You can choose the mode /// and the buffer size using <c>multiThread</c> and <c>initialBufferSize</c> arguments - /// when instantiating XslReader object.</para> + /// when instantiating XslReader object. On small XSLT outputs XslReader performs + /// better in a singlethreaded mode, but on medium and big outputs multithreaded + /// mode is preferrable. You are adviced to measure performance in both modes to + /// find out which suites better for your particular scenario.</para> /// <para>XslReader designed to be reused. Just provide another inoput XML or XSLT /// stylesheet, start transformation and read the output. If the <c>StartTransform()</c> /// method is called when previous @@ -61,9 +66,44 @@ /// After that create XslReader instance optionally choosing multithreaded or /// singlethreaded mode and initial buffer size.<br/> /// Finally start transformation by calling <c>StartTransform()</c> method and then - /// read transformation output via XslReader's object, which implements + /// you can read transformation output via XslReader object, which implements /// <see cref="XmlReader"/> API. - /// + /// </para> + /// <para> + /// Basic XslReader usage sample: + /// <code> + /// //Prepare XslCompiledTransform + /// XslCompiledTransform xslt = new XslCompiledTransform(); + /// xslt.Load("catalog.xslt"); + /// //Prepare input XML + /// XmlInput input = new XmlInput("books.xml"); + /// //Create XslReader + /// XslReader xslReader = new XslReader(xslt); + /// //Initiate transformation + /// xslReader.StartTransform(input, null); + /// //Now read XSLT output from the reader + /// XPathDocument results = new XPathDocument(xslReader); + /// </code> + /// A more advanced sample: + /// <code> + /// //Prepare XslCompiledTransform + /// XslCompiledTransform xslt = new XslCompiledTransform(); + /// xslt.Load("../../catalog.xslt"); + /// //Prepare XmlResolver to be used by the document() function + /// XmlResolver resolver = new XmlUrlResolver(); + /// resolver.Credentials = new NetworkCredential("user42", "god"); + /// //Prepare input XML + /// XmlInput input = new XmlInput("../../books.xml", resolver); + /// //Create XslReader, multithreaded mode, initial buffer for 32 nodes + /// XslReader xslReader = new XslReader(xslt, true, 32); + /// //XSLT parameters + /// XsltArgumentList prms = new XsltArgumentList(); + /// prms.AddParam("param2", "", "red"); + /// //Initiate transformation + /// xslReader.StartTransform(input, prms); + /// //Now read XSLT output from the reader + /// XPathDocument results = new XPathDocument(xslReader); + /// </code> /// </para> /// </example> public class XslReader : XmlReader { @@ -99,7 +139,7 @@ /// <param name="xslTransform">Loaded <see cref="XslCompiledTransform"/> object</param> /// <param name="multiThread">Defines in which mode (multithreaded or singlethreaded) /// this instance of XslReader will operate</param> - /// <param name="initialBufferSize">Initial buffer size</param> + /// <param name="initialBufferSize">Initial buffer size (number of nodes, not bytes)</param> public XslReader(XslCompiledTransform xslTransform, bool multiThread, int initialBufferSize) { this.xslCompiledTransform = xslTransform; this.multiThread = multiThread; |