xsltc.exe - kompilator arkuszy xslt.

Arkusze xslt są bardzo poręczne w aplikacjach przetwarzających dokumenty Xml. Niestety ich zastosowanie często nie pozostaje bez wpływu na wydajność aplikacji. Na platformie .NET - (klasa XslCompiledTransform) - pomijając problemy z wydajnością wynikające z samego sposobu napisania transformacji - ma to głównie związek z kompilacją arkusza w czasie wykonywania programu. Kompilacja arkusza niejednokrotnie zajmuje wiecej czasu niż sama transformacja. Aby zminimalizować wpływ kompilacji arkusza na wydajność całej aplikacji skompilowany arkusz można (powinno się) zachować w pamięci w celu późniejeszego ponownego użycia. Nie zawsze jest to jednak możliwe. W takich przypadkach pomocne może być narzędzie xsltc będące częścią Visual Studio 2008.

xsltc (ang. xslt compiler) jest kmpilatorem arkuszy xslt. Narzędzie pozwala na skompilowanie arkusza XSLT do IL (ang. Intermediate Language) i zapisanie go jako assembly. Skompilowany w ten sposób arkusz XSLT można użyć bezpośrednio w aplikacji aby uniknąć kosztownej operacji kompilacji arkusza w czasie wykonywania programu.

Zarówno użycie narzędzia xsltc jak i skompilowanego arkusza xslt jest stosunkowo proste. Na początek skompilujmy arkusz. Z wiersza poleceń Visual Studio 2008 (Visual Studio 2008 Command Prompt) wystarczy wydać następującą komendę:

xsltc arkusz.xslt 

arkusz.xslt jest scieżką do arkusza xslt, który ma zostać skompilowany. xsltc wywołany w swej najprostszej postaci zastosuje domyślne wartości dla lokalizacji i nazwy wynikowego assembly czy nazwy klasy dla skompilowanego arkusza. Oczywiście można do xsltc przekazać odpowiednie parametry aby tego uniknąć. Opis wszystkich możliwych parametrów xsltc zostanie wyświetlony jeśli wywołamy xsltc bez żadnych parametrów. Oprócz tego można go też znaleźć w sieci.
Po skompilowaniu arkusza należy w projekcie, w którym arkusz ma być użyty dodać referencję do assembly stworzonego przez narzędzie xsltc. (W naszym przypadku xsltc zastosował domyślna nazwa dla wynikowego assembly więc nazywa sie ono: "arkusz.dll". Samo assembly zostało umieszczone w katalogu, z którego uruchamialiśmy xsltc). Po dodaniu referencji wywołanie transformacji w kodzie wygląda tak (podobnie jak w przypadku nazwy dla assembly stworzonego przez xsltc - ponieważ nazwa klasy dla skompilowanego assembly nie została podana xsltc przyjął jako nazwę klasy nazwę arkusza xslt. Stąd w poniższym kodzie w drugiej linii typeof(arkusz)):

XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(typeof(arkusz));
xslt.Transform(@"D:\temp\test.xml", null, Console.Out);

Jak widać zastosowanie xsltc nie jest skomplikowane, a może przyczynić się do znacznego wzrostu wydajności aplikacji.