C# для профессионалов. Том II | страница 24
>
>
>
Ранее упоминался объект >XsltArgumentList. Это способ, которым можно объект с методами связать с пространством имен. Когда это сделано, можно вызывать методы во время преобразования. Рассмотрим пример, чтобы понять, как это работает (находится в >XPathXSLSample4):
>private void button1_Click(object sender, System.EventArgs e) {
> // новый XPathDocument
> XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.xml");
> // новый XslTransform
> XslTransform transForm=new XslTransform();
> transForm.Load("..\\..\\..\\booksarg.xsl");
> // новый XmlTextWriter, так как мы создаем новый документ xml
> XmlWriter xw=new XmlTextWriter(..\\..\\..\\argSample.xml", null);
> // создать XslArgumentList и новый объект BookUtils
> XsltArgumentList argBook=new XsltArgumentList();
> BookUtils bu=new BookUtils();
> // это сообщает список аргументов BookUtils
> argBook.AddExtensionObject("urn:ProCSharp", bu);
> // новый XPathNavigator
> XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();
> // выполнить преобразование
> transForm.Transform(nav, argBook, xw);
> xw.Close();
>}
>// простой тестовый класс
>public class BookUtils {
> public BookUtils() {}
> public string ShowText() {
> return "This came from the ShowText method!";
> }
>}
Вывод преобразования (>argSample.xml) выглядит так:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
Определим новый класс >BookUtils. В этом классе мы имеем один практически бесполезный метод, который возвращает строку >"This came from the ShowText method!". Для события >button1_Click создаются >XPathDocument и >XslTransform так же, как это делалось раньше, но с некоторыми исключениями. В этот раз мы собираемся создать документ XML, поэтому используем >XMLWriter вместо >FileStream. Вот эти изменения:
>XsltArgumentList argBook=new XsltArgumentList();