<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3730668631642674417</id><updated>2011-10-10T14:36:09.794-07:00</updated><title type='text'>binaryThoughts</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://binarythoughts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://binarythoughts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JOGE</name><uri>http://www.blogger.com/profile/04235468482936057775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3730668631642674417.post-8501288436070190683</id><published>2011-03-02T00:41:00.000-08:00</published><updated>2011-03-02T01:21:30.029-08:00</updated><title type='text'></title><content type='html'>SELECT s.SalesOrderID, OrderDate,ProductID&lt;br /&gt;FROM Sales.SalesOrderHeader AS s &lt;br /&gt;INNER JOIN Sales.SalesOrderDetail AS d ON s.SalesOrderID = d.SalesOrderID&lt;br /&gt;ORDER BY s.SalesOrderID, ProductID&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT c.CustomerID, s.SalesOrderID&lt;br /&gt;FROM Sales.Customer c &lt;br /&gt;LEFT OUTER JOIN Sales.SalesOrderHeader s ON c.CustomerID = s.CustomerID&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; var q = from c in customers&lt;br /&gt;            join o in orders on c.Key equals o.Key&lt;br /&gt;            select new {c.Name, o.OrderNumber};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Left Join&lt;br /&gt;&lt;br /&gt;var q2 = from c in dataContext.Customers         join o in dataContext.Orders on c.CustomerID equals o.CustomerID into g         from a in g.DefaultIfEmpty()         select new         {             c.CustomerID,             c.ContactName,             a.OrderID,             a.OrderDate         };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Inner Join on multiple&lt;br /&gt;&lt;br /&gt;//We mark our anonymous type properties as a and b otherwise//we get the compiler error "Type inferencce failed in the call to 'Join’  var q3 = from c in dataContext.Customers         join o in dataContext.Orders on new { a = c.CustomerID, b = c.Country } equals new { a = o.CustomerID, b = "USA" }         select new         {             c.CustomerID,             c.ContactName,             o.OrderID,             o.OrderDate         };&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3730668631642674417-8501288436070190683?l=binarythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://binarythoughts.blogspot.com/feeds/8501288436070190683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://binarythoughts.blogspot.com/2011/03/select-s.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/8501288436070190683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/8501288436070190683'/><link rel='alternate' type='text/html' href='http://binarythoughts.blogspot.com/2011/03/select-s.html' title=''/><author><name>JOGE</name><uri>http://www.blogger.com/profile/04235468482936057775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3730668631642674417.post-3241984279032980784</id><published>2011-01-10T04:36:00.001-08:00</published><updated>2011-01-10T04:36:47.775-08:00</updated><title type='text'>MVC Pattern in Simple C#</title><content type='html'>MVC (Model View Controller) is an architectural pattern. In brief we can describe the participants as,&lt;br /&gt;• A model is an object representing data and all other data service layers beneath it.&lt;br /&gt;• A view is visualization of the state of the model.&lt;br /&gt;• Controller facilities to change the state of the model.&lt;br /&gt;MVC is consisting of Observer, Strategy, and Composite. It also uses Factory Method and Decorator, but the main MVC relationship is defined by the Observer and Strategy patterns.&lt;br /&gt;&lt;br /&gt;The views and models use the Publish-Subscribe protocol (Observers Pattern) -when Model data is changed, it will update the View. View uses the Controller to implement a specific type of response (Strategy Pattern).The controller can be changed to let the View respond differently to user input&lt;br /&gt;&lt;br /&gt;A simple representation of MVC in C# is as follows.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="font-family:Courier New;font-size:85%;color:black;"&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; controller = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Controller();&lt;br /&gt;IView view = controller.View;&lt;br /&gt;view.Radius = &lt;span style="color:#a31515;"&gt;"5"&lt;/span&gt;;&lt;br /&gt;view.UserEvent(view.Radius);&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(view.Result);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Controller : IController&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; IView _view;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Model _model;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IView View&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _view;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Controller()&lt;br /&gt;{&lt;br /&gt;_model = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Model();&lt;br /&gt;_view = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; View(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;, _model);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CalculateRadius(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; radius)&lt;br /&gt;{&lt;br /&gt;_model.CalculateRadius(&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;.Parse(radius));&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; IController&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CalculateRadius(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; newModelState);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; IView&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Radius { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Result { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UserEvent(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; radius);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Model&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; _modelState;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;event&lt;/span&gt; Action OnPropertyChange;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Model()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; ModelState&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _modelState;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;_modelState = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;NotifyPropertyChange();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; NotifyPropertyChange()&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; propChange = OnPropertyChange;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (propChange != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;OnPropertyChange();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CalculateRadius(&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt; radius)&lt;br /&gt;{&lt;br /&gt;ModelState = (&lt;span style="color:#2b91af;"&gt;Math&lt;/span&gt;.PI * radius*radius).ToString();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; View : IView&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; IController _controller;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Model _model;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; View(IController controller, Model model)&lt;br /&gt;{&lt;br /&gt;_controller = controller;&lt;br /&gt;_model = model;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//Let the model know that this view is interested if the model change&lt;/span&gt;&lt;br /&gt;_model.OnPropertyChange += &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Action(UpdateView);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; radius = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Radius&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; radius; }&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; { radius = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; result = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Result&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt; { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; result; }&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt; { result = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UpdateView()&lt;br /&gt;{&lt;br /&gt;Result = _model.ModelState.ToString();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UserEvent(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; radius)&lt;br /&gt;{&lt;br /&gt;_controller.CalculateRadius(radius);&lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3730668631642674417-3241984279032980784?l=binarythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://binarythoughts.blogspot.com/feeds/3241984279032980784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/mvc-pattern-in-simple-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/3241984279032980784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/3241984279032980784'/><link rel='alternate' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/mvc-pattern-in-simple-c.html' title='MVC Pattern in Simple C#'/><author><name>JOGE</name><uri>http://www.blogger.com/profile/04235468482936057775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3730668631642674417.post-4592894374341121035</id><published>2011-01-10T04:28:00.001-08:00</published><updated>2011-01-10T04:35:40.043-08:00</updated><title type='text'>Sitecore.NVelocity</title><content type='html'>&lt;p&gt;Apparently I was working with Sitecore and its mail template. Sitecore suggest using nVelocity for template rendering. I notices that they have their own version of nVelocity called &lt;a href="http://sdn.sitecore.net/Articles/API/Using%20NVelocity.aspx" target="_blank"&gt;Sitecore.NVelocity&lt;/a&gt;. The base code is essentially the same and the code for rendering the template is slightly different as follows ( as in original Velocity)&lt;/p&gt;  &lt;p&gt;In the constructor&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Velocity&lt;/span&gt;.Init();&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;font face="Georgia"&gt;For rendering call &lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;Velocity&lt;/span&gt;.Evaluate(context, generated, &lt;span style="color: #a31515"&gt;&amp;quot;nVelocityLog&amp;quot;&lt;/span&gt;, reader);&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3730668631642674417-4592894374341121035?l=binarythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://binarythoughts.blogspot.com/feeds/4592894374341121035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/apparently-i-was-working-with-sitecore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/4592894374341121035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/4592894374341121035'/><link rel='alternate' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/apparently-i-was-working-with-sitecore.html' title='Sitecore.NVelocity'/><author><name>JOGE</name><uri>http://www.blogger.com/profile/04235468482936057775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3730668631642674417.post-6469691985195790099</id><published>2011-01-10T04:26:00.001-08:00</published><updated>2011-01-10T04:35:02.591-08:00</updated><title type='text'>nVelocity to render templates</title><content type='html'>&lt;p&gt;nVelocity is a .Net-based template engine. It permits anyone to use the simple yet powerful template language to reference objects defined in .Net code. I use this template engine for rendering the mail templates in my application. This is a wonderful framework, with a defined syntax to render field values inside the template. For those who do not know, project is a port of the Jakarta Velocity to Microsoft .Net (written in C#). This is a discontinued project, but the Castle project fork&amp;#160; enhanced it to support their monorail implementation. There are different versions available, I used one from Castle project website which has a lot of bug fixes and features incorporated than the original. &lt;/p&gt;  &lt;p&gt;Below is the sample code to illustrate nVelocity to render mail template.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.IO;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;Commons.Collections;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;NVelocity;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;NVelocity.App;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;NVelocitySample&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Program&lt;br /&gt;  &lt;/span&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;static &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VelocityEngine &lt;/span&gt;velocity;&lt;br /&gt;    &lt;span style="color: blue"&gt;static void &lt;/span&gt;Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;    {&lt;br /&gt;      InitializeVelocity();&lt;br /&gt; &lt;br /&gt;      &lt;span style="color: blue"&gt;string &lt;/span&gt;output = GenerateOutput();&lt;br /&gt;      &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(output);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;private static void &lt;/span&gt;InitializeVelocity()&lt;br /&gt;    {&lt;br /&gt;      &lt;span style="color: #2b91af"&gt;ExtendedProperties &lt;/span&gt;properties = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ExtendedProperties&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;      velocity = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VelocityEngine&lt;/span&gt;(properties);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;private static string &lt;/span&gt;GenerateOutput()&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Message &lt;/span&gt;mail = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Message&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        mail.From = &lt;span style="color: #a31515"&gt;&amp;quot;sender@company.com&amp;quot;&lt;/span&gt;;&lt;br /&gt;        mail.To = &lt;span style="color: #a31515"&gt;&amp;quot;recipient@company.com&amp;quot;&lt;/span&gt;;&lt;br /&gt;        mail.Subject = &lt;span style="color: #a31515"&gt;&amp;quot;This a mail render example&amp;quot;&lt;/span&gt;;&lt;br /&gt;        mail.Body = &lt;span style="color: #a31515"&gt;&amp;quot;This is the body where replace a dictionary to show the versatility of nVelocity&amp;quot;&lt;/span&gt;;&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; coll = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;        coll[&lt;span style="color: #a31515"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;] = &lt;span style="color: #a31515"&gt;&amp;quot;Hi,&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;string &lt;/span&gt;stringData = &lt;span style="color: #a31515"&gt;&amp;quot;From: $mail.From  \n&amp;quot;&lt;/span&gt;;&lt;br /&gt;        stringData += &lt;span style="color: #a31515"&gt;&amp;quot;To:   $mail.To \n\n&amp;quot;&lt;/span&gt;;&lt;br /&gt;        stringData += &lt;span style="color: #a31515"&gt;&amp;quot;Subject: $mail.Subject  \n\n&amp;quot;&lt;/span&gt;;&lt;br /&gt;        stringData += &lt;span style="color: #a31515"&gt;&amp;quot;$coll.get_Item('key') $mail.Body&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Hashtable &lt;/span&gt;hashTable = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Hashtable&lt;/span&gt;();&lt;br /&gt;        hashTable.Add(&lt;span style="color: #a31515"&gt;&amp;quot;mail&amp;quot;&lt;/span&gt;, mail);&lt;br /&gt;        hashTable.Add(&lt;span style="color: #a31515"&gt;&amp;quot;coll&amp;quot;&lt;/span&gt;, coll);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;VelocityContext &lt;/span&gt;context = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;VelocityContext&lt;/span&gt;(hashTable);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;StringWriter &lt;/span&gt;generated = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StringWriter&lt;/span&gt;();&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;StringReader &lt;/span&gt;reader = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;StringReader&lt;/span&gt;(stringData);&lt;br /&gt;        velocity.Evaluate(context, generated, &lt;span style="color: #a31515"&gt;&amp;quot;nVelocityLog&amp;quot;&lt;/span&gt;, reader);&lt;br /&gt;        &lt;span style="color: blue"&gt;return &lt;/span&gt;generated.GetStringBuilder().ToString();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Message&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: blue"&gt;private string &lt;/span&gt;from;&lt;br /&gt;        &lt;span style="color: blue"&gt;private string &lt;/span&gt;to;&lt;br /&gt;        &lt;span style="color: blue"&gt;private string &lt;/span&gt;subject;&lt;br /&gt;        &lt;span style="color: blue"&gt;private string &lt;/span&gt;body;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;From&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;from; }&lt;br /&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ from = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;To&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;to; }&lt;br /&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ to = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;Subject&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;subject; }&lt;br /&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ subject = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public string &lt;/span&gt;Body&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;body; }&lt;br /&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ body = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Coll&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; fields = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; Fields&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;fields; }&lt;br /&gt;            &lt;span style="color: blue"&gt;set &lt;/span&gt;{ fields = &lt;span style="color: blue"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3730668631642674417-6469691985195790099?l=binarythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://binarythoughts.blogspot.com/feeds/6469691985195790099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/nvelocity-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/6469691985195790099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/6469691985195790099'/><link rel='alternate' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/nvelocity-is.html' title='nVelocity to render templates'/><author><name>JOGE</name><uri>http://www.blogger.com/profile/04235468482936057775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3730668631642674417.post-262062242096289307</id><published>2011-01-10T04:24:00.001-08:00</published><updated>2011-01-10T04:34:22.902-08:00</updated><title type='text'>Calling C# function in XSL</title><content type='html'>&lt;p&gt;In my current project, someone was looking for calling a C# function in XSL transformation. The following example calls a C# function declared in an external assembly for XSL transformation. &lt;span style="font-family:Times New Roman;color:#0000ff;"&gt;DollerEuroConverter&lt;/span&gt; class is defined in the assembly &lt;span style="font-family:Times New Roman;color:#0000ff;"&gt;CurrencyConverter.dll&lt;/span&gt;. The GetEuroValue function is just a sample implementation to show how the data from xsl can be modified using C# function. I tested it using a &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=72d6aa49-787d-4118-ba5f-4f30fe913628&amp;amp;displaylang=en"&gt;XML Notepad&lt;/a&gt;, I got the following output. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_dwiWkNzd8MM/Sd5FJWSRnOI/AAAAAAAAABE/GEAGIPMNb5E/s1600-h/clip_image002%5B3%5D.gif"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/_dwiWkNzd8MM/Sd5FKUb0vSI/AAAAAAAAABM/buregrLi95g/clip_image002_thumb.gif?imgmax=800" width="244" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;CurrencyConverter class&lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; CurrencyConverter&lt;br /&gt;{&lt;br /&gt;    &lt;span class="rem"&gt;//our custom class&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DollerEuroConverter&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//function that gets called from XSLT&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetEuroValue(&lt;span class="kwrd"&gt;string&lt;/span&gt; xslDollar)&lt;br /&gt;        {&lt;br /&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;float&lt;/span&gt;.Parse(xslDollar) / 0.749962502).ToString(&lt;span class="str"&gt;"##.##"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:100%;"&gt;CD.xml (Sample from w3schools)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="ISO-8859-1"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;catalog&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Empire Burlesque&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Bob Dylan&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;USA&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Columbia&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;10.90&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1985&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Hide your heart&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Bonnie Tyler&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;UK&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;CBS Records&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;9.90&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1988&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Greatest Hits&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Dolly Parton&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;USA&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;RCA&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;9.90&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1982&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Still got the blues&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Gary Moore&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;artist&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;UK&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;country&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Virgin records&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;company&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;10.20&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;price&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1990&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;year&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cd&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;catalog&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;CD.xsl&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-16"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:stylesheet&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt;&lt;br /&gt;&lt;span class="attr"&gt;xmlns:xsl&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/XSL/Transform"&lt;/span&gt;&lt;br /&gt;                                &lt;span class="attr"&gt;xmlns:msxsl&lt;/span&gt;&lt;span class="kwrd"&gt;="urn:schemas-microsoft-com:xslt"&lt;/span&gt;&lt;br /&gt;                &lt;span class="attr"&gt;xmlns:MyClass&lt;/span&gt;&lt;span class="kwrd"&gt;="CurrencyConverter.DollerEuroConverter"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msxsl:script&lt;/span&gt; &lt;span class="attr"&gt;language&lt;/span&gt;&lt;span class="kwrd"&gt;="C#"&lt;/span&gt; &lt;span class="attr"&gt;implements-prefix&lt;/span&gt;&lt;span class="kwrd"&gt;="MyClass"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msxsl:assembly&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=".\bin\Debug\CurrencyConverter.dll"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;msxsl:using&lt;/span&gt; &lt;span class="attr"&gt;namespace&lt;/span&gt;&lt;span class="kwrd"&gt;="CurrencyConverter"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;[CDATA[&lt;br /&gt;&lt;br /&gt;        public string GetPrice(string data)&lt;br /&gt;&lt;br /&gt;        {&lt;br /&gt;          CurrencyConverter.DollerEuroConverter conveter = new CurrencyConverter.DollerEuroConverter();&lt;br /&gt;          string days = conveter.GetEuroValue(data);&lt;br /&gt;          return days;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    ]]&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;msxsl:script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:template&lt;/span&gt; &lt;span class="attr"&gt;match&lt;/span&gt;&lt;span class="kwrd"&gt;="/"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;My CD Collection&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt; &lt;span class="attr"&gt;border&lt;/span&gt;&lt;span class="kwrd"&gt;="1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt; &lt;span class="attr"&gt;bgcolor&lt;/span&gt;&lt;span class="kwrd"&gt;="#9acd32"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Title&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Artist&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Price in Euro&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;th&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:for-each&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;="catalog/cd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;="title"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;="artist"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xsl:value-of&lt;/span&gt; &lt;span class="attr"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;="MyClass:GetPrice(price)"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;€&lt;br /&gt;              &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:for-each&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:template&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xsl:stylesheet&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3730668631642674417-262062242096289307?l=binarythoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://binarythoughts.blogspot.com/feeds/262062242096289307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/in-my-current-project-someone-was.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/262062242096289307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3730668631642674417/posts/default/262062242096289307'/><link rel='alternate' type='text/html' href='http://binarythoughts.blogspot.com/2011/01/in-my-current-project-someone-was.html' title='Calling C# function in XSL'/><author><name>JOGE</name><uri>http://www.blogger.com/profile/04235468482936057775</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_dwiWkNzd8MM/Sd5FKUb0vSI/AAAAAAAAABM/buregrLi95g/s72-c/clip_image002_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
