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



>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!";

>  }


>  

>  

>  



>