//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;

namespace FrameworkLibraries
{
	public class TransformXmlFile
	{
		public static void Main(string [] args)
		{
			string xmldocument = "booklist.xml";
			string xsldocument = "total-sales.xsl";
			TransformXmlFile transformXml = new TransformXmlFile();
			if ( args.Length > 1 ) 
			{
				transformXml.Process(args[0], args[1]);
			}
			else
				transformXml.Process(xmldocument, xsldocument);
		}

		public void Process(string document, string xsl)
		{
			XmlReader reader = null;
			try
			{
				XPathDocument myXPathDocument = new XPathDocument (document);
				XslTransform myXslTransform = new XslTransform();
				myXslTransform.Load(xsl);
				reader = myXslTransform.Transform(myXPathDocument, null);
				while (reader.Read())
				{
					Console.WriteLine(reader.Value);
				}
			}
			catch (Exception e)
			{
				Console.WriteLine ("Wyjątek: {0}", e.ToString());
			}
			finally
			{
				Console.WriteLine();
				Console.WriteLine("Zakończono przetwarzanie pliku {0}.", document);
				// Zakończono pracę z XmlTextReader
				if (reader != null)
					reader.Close();
			}
		}
	}
}
