C# для профессионалов. Том II | страница 23



В первом примере, который мы рассмотрим, берется документ >books.xml и преобразуется в простой документ HTML для вывода. (Этот код можно найти в папке >XPathXSLSample3.) Необходимо будет добавить следующие операторы >using:

>using System.IO;

>using System.Xml.Xsl;

>using System.Xml.XPath;

Вот код, выполняющий преобразование:

>private void button1_Click(object sender System.EventArgs e) {

> //создать новый XPathDocument

> XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.XML");

> // создать новый XslTransForm

> XslTransform transForm=new XslTransform();

> transForm.Load("..\\..\\..\\books.xsl");

> // этот FileStream будет нашим выводом

> FileStream fs=new FileStream("..\\..\\..\\booklist.html", FileMode.Create);

> // Создать Navigator

> XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();

> // Выполнить преобразование. Файл вывода создается здесь.

> transForm.Transform(nav, null, fs);

>}

Сделать это преобразование проще почти невозможно. Сначала создается объект на основе >XPathDocument и объект на основе >XslTransform. Затем файл >bookspath.xml загружается в >doc, a >books.xsl в >transForm. В этом примере для записи нового документа HTML на диск создается объект >FileStream.

Если бы это было приложение ASP.NET, мы использовали бы объект >TextWriter и передавали бы его в объект >HttpResponse. Если бы мы преобразовывали в другой документ XML, то применялся бы объект на основе >XmlWriter. После того как объекты >XPathDocument и >XslTransform будут готовы, мы создаем >XPathNavigator на >doc и передаем >nav и этот >stream в метод >Transform объекта >transForm. >XslTransform имеет несколько перегружаемых версий, получающих комбинации навигаторов, >XsltArgumentList (подробнее об этом позже) и потоков ввода/вывода. Параметром навигатора может быть >XPathNavigator или любой объект, реализующий интерфейс >IXPathNavigable. Потоки ввода/вывода могут быть >TextWriter, >Stream или объектом на основе >XmlWriter.

Документ >books.xsl является таблицей стилей. Документ выглядит следующим образом:

>

>  

>   

>    Price List

>   

>  

>   

>    

>    

>   

>  



>  

>  

>  

>