>BookUtils bu=new BookUtils();
>argBook.AddExtensionObject("urn:ProCSharp", bu);
Именно здесь создается >XsltArgumentList. Мы создаем экземпляр объекта >BookUtils, и когда вызывается метод >AddExtensionObject, ему передается пространство имен расширения и объект, из которого мы хотим вызывать методы. Когда делается вызов >Transform, ему передаются >XsltArgumentList (>argBook) вместе с >XPathNavigator и созданный объект >XmlWriter. Вот документ >booksarg.xsl:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
Здесь имеются две важные строки. В начале добавляется пространство имен, которое создается при добавлении объекта к >XsltArgumentList. Затем применяется стандартный синтаксис использования префикса перед пространством имен XSLT и вызывается метод.
Иначе это можно было бы выполнить с помощью сценария XSLT. В таблицу стилей можно включить код C#, VB и JavaScript. Большим достоинством этого является то, что в отличие от текущих реализаций, сценарий компилируется при вызове >Transform.Load; таким образом выполняются уже откомпилированные сценарии, в значительной степени так же, как работает ASP.NET. Давайте выполним предыдущий пример таким способом. Добавим сценарий к таблице стилей. Эти изменения можно увидеть в файле >bookscript.xsl:
>
>
> string ShowText() {
> return "This came from the ShowText method!";
> }
>
>
>
>
>
>
>
>
>
>
>
>