<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>PerfectStorm Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home</link><description>PerfectStorm Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm started life as a code generation utility.&lt;br /&gt;&lt;br /&gt;It now includes workflow utilities.&lt;br /&gt;&lt;br /&gt;It requires .NET 3.0 to be installed. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PerfectStorm.CodeGen&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://perfectstorm.codeplex.com/Wiki/View.aspx?title=Things%20I%20Have%20Generated&amp;amp;referringTitle=Home"&gt;Things I Have Generated&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;PerfectStorm.Rules&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;I have taken to experimenting with the rules engine from the WF framework. This is a place for me to keep the rules engine parts.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Mon, 23 Mar 2009 21:02:21 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090323090221P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things%20I%20Have%20Generated&amp;amp;referringTitle=Home"&gt;Things I Have Generated&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;This project will not be updated during September as I am getting married. Updates will resume when I am back from my Honeymoon&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sat, 30 Aug 2008 10:01:31 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080830100131A</guid></item><item><title>Updated Wiki: Things I Have Generated</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things I Have Generated&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Things I Have Generated
&lt;/h1&gt; &lt;br /&gt;In addition to being the developer of this project I am also a user of it.&lt;br /&gt; &lt;br /&gt;Here are a list of the items that I have generated:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Sharepoint Content Type and Field defintions (as feature.xml)&lt;/li&gt;&lt;li&gt;Table creation scripts&lt;/li&gt;&lt;li&gt;Index creation scripts&lt;/li&gt;&lt;li&gt;Trigger creation scripts&lt;/li&gt;&lt;li&gt;Monorail Model components&lt;/li&gt;&lt;li&gt;Monorail Controller components&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;The real benefit of this is that you can create a whole project worth of identically structured files.&lt;br /&gt;Any improvements that you think of will be applied everywhere.&lt;br /&gt;You end up with very consistent code and the business analysts can keep changing their minds and you are not driven to distraction!&lt;br /&gt; &lt;br /&gt;The only catch I have found is getting the whitespace to work properly.  The trick is to use  &amp;lt;xsl:value-of select=&amp;quot;' '&amp;quot;/&amp;gt;  between consectutive xslt tags where you want a space.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:11:31 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Things I Have Generated 20080820091131P</guid></item><item><title>Updated Wiki: Things I Have Generated</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things I Have Generated&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
!Things I Have Generated&lt;br /&gt; &lt;br /&gt;In addition to being the developer of this project I am also a user of it.&lt;br /&gt; &lt;br /&gt;Here are a list of the items that I have generated:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Sharepoint Content Type and Field defintions (as feature.xml)&lt;/li&gt;&lt;li&gt;Table creation scripts&lt;/li&gt;&lt;li&gt;Index creation scripts&lt;/li&gt;&lt;li&gt;Trigger creation scripts&lt;/li&gt;&lt;li&gt;Monorail Model components&lt;/li&gt;&lt;li&gt;Monorail Controller components&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;The real benefit of this is that you can create a whole project worth of identically structured files.&lt;br /&gt;Any improvements that you think of will be applied everywhere.&lt;br /&gt;You end up with very consistent code and the business analysts can keep changing their minds and you are not driven to distraction!&lt;br /&gt; &lt;br /&gt;The only catch I have found is getting the whitespace to work properly.  The trick is to use  &amp;lt;xsl:value-of select=&amp;quot;' '&amp;quot;/&amp;gt;  between consectutive xslt tags where you want a space.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:11:04 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Things I Have Generated 20080820091104P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Things%20I%20Have%20Generated&amp;amp;referringTitle=Home"&gt;Things I Have Generated&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:03:59 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080820090359P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;  &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:02:55 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080820090255P</guid></item><item><title>Updated Wiki: Code Generation in Microsoft.NET</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code Generation in Microsoft.NET&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Code Generation in Microsoft.NET&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;by Kathleen Dollard&lt;br /&gt; &lt;br /&gt;This is the book that inspired the writing of this tool.&lt;br /&gt; &lt;br /&gt;The price of the book is worth it for the xslt tutorial chapters alone!&lt;br /&gt; &lt;br /&gt;The book describes a set of principles and techniques that can be used to develop code using code generation techniques.&lt;br /&gt;The book intended to provide the reader with the knowledge required to create their own code generation utility.&lt;br /&gt;However as the book provided a sample suite of generation tools to act as examples most discussions of the book treats it as an introduction to the supplied generation tools.&lt;br /&gt;I have taken the other approach and have created my own tool based upon the presented techniques.&lt;br /&gt; &lt;br /&gt;Here are the principles:&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;You have control of the templates that generate your code and can change them as required.&lt;/li&gt;&lt;li&gt;Collect metadata as a separate, distinct step with usable output that can independently evolve.&lt;/li&gt;&lt;li&gt;You or someone unfamiliar with the project can regenerate your code precisely as a one click process - now or at any point in the future.&lt;/li&gt;&lt;li&gt;You embrace handcrafted code by isolation and protecting it. Code generation is a supporting player to human programming and doesn't overwrite files unless they were generated and haven't been edited.&lt;/li&gt;&lt;li&gt;The code generated application is a high quality application. It allows more effective testing, has equal or better performance and is more easily maintained than a similar fully handcrafted application.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;Currently Perfect Storm's CodeGen fails to acheive protection of handcrafted code  - but I intend to add this as a feature soon. &lt;br /&gt; &lt;br /&gt;Protection of handcrafted code can be implemented as a transform filter.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 21:00:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Code Generation in Microsoft.NET 20080820090011P</guid></item><item><title>Updated Wiki: Transformation Filters</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation Filters&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
!Transformation Filters&lt;br /&gt; &lt;br /&gt;A transformation filter is a class that implements the ITransformFilter interface.&lt;br /&gt; &lt;br /&gt;It is registered by adding an entry in the app.config file under filters.&lt;br /&gt; &lt;br /&gt;The following is the definition of ITransformFilter:&lt;br /&gt; &lt;br /&gt;    public interface ITransformFilter&lt;br /&gt;    {&lt;br /&gt;        bool BeforeTransform(XmlDocument model, XmlDocument xslt, string outputFilename, Hashtable data, params string[] arguments); &lt;br /&gt; &lt;br /&gt;        MemoryStream AfterTransform(XmlDocument model, XmlDocument xslt, MemoryStream priorOutput, MemoryStream output, string outputFilename, Hashtable data, params string[] arguments);&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BeforeTransform&lt;/b&gt; is used to prevent the transformation taking place.  &lt;br /&gt;If any registered filter returns false from the BeforeTransform then the output will not be written.&lt;br /&gt;This allows specific files to be protected (effectively they can become write once) &lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the name of the file to be created&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns true then the filter permits the code generation to continue,&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AfterTransform&lt;/b&gt; is used to alter the output.  It can do anything to the output.&lt;br /&gt;If it does not return null then the returned memorystream is used in place of the output.&lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the previous output as a memorystream (or null if it did not previously exist).&lt;/li&gt;&lt;li&gt;the current output.&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns a non-null memory stream then this is used in place of the current memory stream.&lt;br /&gt; &lt;br /&gt;The minimal null transform would return true from the BeforeTransform and null from the AfterTransform.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:54:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Transformation Filters 20080820085446P</guid></item><item><title>Updated Wiki: Transformation Filters</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation Filters&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
!Transformation Filters&lt;br /&gt; &lt;br /&gt;A transformation filter is a class that implements the ITransformFilter interface.&lt;br /&gt; &lt;br /&gt;It is registered by adding an entry in the app.config file under filters.&lt;br /&gt; &lt;br /&gt;The following is the definition of ITransformFilter:&lt;br /&gt; &lt;br /&gt;    public interface ITransformFilter&lt;br /&gt;    {&lt;br /&gt;        bool BeforeTransform(XmlDocument model, XmlDocument xslt, string outputFilename, Hashtable data, params string[] arguments); &lt;br /&gt; &lt;br /&gt;        MemoryStream AfterTransform(XmlDocument model, XmlDocument xslt, MemoryStream priorOutput, MemoryStream output, string outputFilename, Hashtable data, params string[] arguments);&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;&lt;b&gt;BeforeTransform&lt;/b&gt; is used to prevent the transformation taking place.  &lt;br /&gt;If any registered filter returns false from the BeforeTransform then the output will not be written.&lt;br /&gt;This allows specific files to be protected (effectively they can become write once) &lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the name of the file to be created&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns true then the filter permits the code generation to continue,&lt;br /&gt; &lt;br /&gt;&lt;b&gt;AfterTransform&lt;/b&gt; is used to alter the output.  It can do anything to the output.&lt;br /&gt;If it does not return null then the returned memorystream is used in place of the output.&lt;br /&gt;It is passed:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;the model file (as xml), &lt;/li&gt;&lt;li&gt;the transform file (as xml) &lt;/li&gt;&lt;li&gt;the previous output as a memorystream (or null if it did not previously exist).&lt;/li&gt;&lt;li&gt;the current output.&lt;/li&gt;&lt;li&gt;A hashtable (intended to allow the filters to communicate with one another)&lt;/li&gt;&lt;li&gt;the command line parameters initially passed in&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;If it returns a non-null memory stream then this is used in place of the current memory stream.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:53:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Transformation Filters 20080820085308P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed. This also works with Mono.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;Now includes the ability for the user to define their own &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Transformation%20Filters&amp;amp;referringTitle=Home"&gt;Transformation Filters&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Wed, 20 Aug 2008 20:39:36 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080820083936P</guid></item><item><title>Updated Wiki: About Version Numbers</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About Version Numbers&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Version Numbers&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;There are so many conventions for version numbers but here is the one that I am using.&lt;br /&gt; &lt;br /&gt;Version numbers are of the form:&lt;br /&gt; &lt;br /&gt;A.B.C.D&lt;br /&gt; &lt;br /&gt;A will change with a major rewrite&lt;br /&gt; &lt;br /&gt;B will change when a change will require templates to change.&lt;br /&gt; &lt;br /&gt;C will change when a change will require the CodeGen.exe.config to be altered.&lt;br /&gt; &lt;br /&gt;D will change for additive updates and bug fixes.&lt;br /&gt; &lt;br /&gt;If an item is changed all of the lesser ones reset to zero.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sat, 09 Aug 2008 10:00:24 GMT</pubDate><guid isPermaLink="false">Updated Wiki: About Version Numbers 20080809100024A</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=11</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.&lt;br /&gt;&lt;br /&gt;Currently Mono support is broken but it is intended to fix it.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=About%20Version%20Numbers&amp;amp;referringTitle=Home"&gt;About Version Numbers&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sat, 09 Aug 2008 09:54:58 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080809095458A</guid></item><item><title>Updated Wiki: XML as a Domain Specific Language</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML as a Domain Specific Language&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;XML as a Domain Specific Language&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;This is ideal for describing the structure of things.&lt;br /&gt;Business analysts can sketch out entities very quickly in notepad if needed.&lt;br /&gt; &lt;br /&gt;With a little xslt (and a suitable application framework) you can turn this into demo in a few hours top.&lt;br /&gt; &lt;br /&gt;XML is not very good at loops and branching...&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 21:29:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: XML as a Domain Specific Language 20080803092918P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=10</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.&lt;br /&gt;&lt;br /&gt;Currently Mono support is broken but it is intended to fix it.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=XML%20as%20a%20Domain%20Specific%20Language&amp;amp;referringTitle=Home"&gt;XML as a Domain Specific Language&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 21:26:24 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080803092624P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=9</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.&lt;br /&gt;&lt;br /&gt;Currently Mono support is broken but it is intended to fix it.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;I would love to get feedback on this project - ideas for expansion, contributed samples, success stories (or otherwise).&lt;/b&gt;&lt;br /&gt;All contributions will be credited.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 21:19:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080803091953P</guid></item><item><title>Updated Wiki: Design Philosophy</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design Philosophy&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Design Philosophy&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;This tool will be as simple as possible without compromising the power available.&lt;br /&gt; &lt;br /&gt;Nothing is hidden behind a gui - anything that you do can be done on the command line.&lt;br /&gt;There are plenty of codegen tools out there that have a very high startup cost.&lt;br /&gt;The only price for this one is that you must learn some xlst.&lt;br /&gt; &lt;br /&gt;Debugging can be done using the tool itself - simplify your problem into an xml document and a transform and solve it one item at a time.&lt;br /&gt; &lt;br /&gt;The entire power of xslt is at your disposal.&lt;br /&gt; &lt;br /&gt;Earlier versions of what inspired this required separate tools or documents for the creation of the specific data.&lt;br /&gt;The original part is allowing you to supply xslt template parameters on the command line!&lt;br /&gt;Everything changes once you can do that!  All else is detail.&lt;br /&gt; &lt;br /&gt;The project will supply additional functionality and bundle the same tool in other forms but the templates will always be transferable between versions.&lt;br /&gt; &lt;br /&gt;If you don't like the .Net basis of this project then feel free to port it to another platform.  &lt;br /&gt;I can see this same idea working in Ruby or Java.  The syntax would remain the same!&lt;br /&gt; &lt;br /&gt;The templates and model are yours to define and extend however you wish.&lt;br /&gt; &lt;br /&gt;Just because my examples all use batch files don't feel constrained - these are lowest common denominator examples - feel free to use Nant, MSBuild, Powershell, boo, perl whatever floats your boat.&lt;br /&gt;The codegen tool even returns errorcode on failure so you can make the batch files even more sophisticated if you want to.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 21:16:58 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Design Philosophy 20080803091658P</guid></item><item><title>Updated Wiki: Design Philosophy</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design Philosophy&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Design Philosophy&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;This tool will be as simple as possible without compromising the power available.&lt;br /&gt; &lt;br /&gt;Nothing is hidden behind a gui - anything that you do can be done on the command line.&lt;br /&gt;There are plenty of codegen tools out there that have a very high startup cost.&lt;br /&gt;The only price for this one is that you must learn some xlst.&lt;br /&gt; &lt;br /&gt;Debugging can be done using the tool itself - simplify your problem into an xml document and a transform and solve it one item at a time.&lt;br /&gt; &lt;br /&gt;The entire power of xslt is at your disposal.&lt;br /&gt; &lt;br /&gt;Earlier versions of what inspired this required separate tools or documents for the creation of the specific data.&lt;br /&gt;The original part is allowing you to supply xslt template parameters on the command line!&lt;br /&gt;Everything changes once you can do that!  All else is detail.&lt;br /&gt; &lt;br /&gt;The project will supply additional functionality and bundle the same tool in other forms but the templates will always be transferable between versions.&lt;br /&gt; &lt;br /&gt;If you don't like the .Net basis of this project then feel free to port it to another platform.  &lt;br /&gt;I can see this same idea working in Ruby or Java.  The syntax would remain the same!&lt;br /&gt; &lt;br /&gt;The templates and model are yours to define and extend however you wish.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 21:11:52 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Design Philosophy 20080803091152P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=8</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.&lt;br /&gt;&lt;br /&gt;Currently Mono support is broken but it is intended to fix it.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Design%20Philosophy&amp;amp;referringTitle=Home"&gt;Design Philosophy&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 21:02:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080803090257P</guid></item><item><title>Updated Wiki: xslt tutorial</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt tutorial&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;xslt Tutorial&lt;/b&gt; : &lt;i&gt;Just Enough xslt to perform...&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;xslt is a complex language that is used to translate an xml document into anything else.&lt;br /&gt; &lt;br /&gt;It is very powerful, yet can be odd to read for the uninitiated.&lt;br /&gt;I cut my teeth on xslt when working on a project that used complex xlst transforms that I had to work out.&lt;br /&gt;Eventually it becomes readable - but I will try to stick to the simple stuff. &lt;br /&gt; &lt;br /&gt;This article is intended to become a basic primer.&lt;br /&gt; &lt;br /&gt;To start with an xslt template needs the following goo at the start:&lt;br /&gt; &lt;br /&gt;&amp;lt;!--?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?--&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; &lt;br /&gt;                xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;                xmlns:PerfectStorm=&amp;quot;urn:PerfectStorm&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;xsl:output method=&amp;quot;text&amp;quot; standalone=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;xsl:preserve-space elements=&amp;quot;*&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt; &lt;br /&gt;and the following goo at the end&lt;br /&gt; &lt;br /&gt;  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt; &lt;br /&gt;This is the basic version of an xslt template - it can get far more involved.&lt;br /&gt; &lt;br /&gt;There are several styles of xslt template:&lt;br /&gt; &lt;br /&gt;One fills in a document based upon data supplied by an external xml document - this is typically the form that I use for codegen.&lt;br /&gt;Others take an xml document and alter it's values following the structure of the document.  This is harder to follow and I have yet to require it for codegen.&lt;br /&gt;However it is there if needed.&lt;br /&gt; &lt;br /&gt;Lets give a worked example of the first kind. Note this is not the trivial fill in the blanks option this does a lookup via xpath:&lt;br /&gt; &lt;br /&gt;Here is the source document (what I call a model):&lt;br /&gt; &lt;br /&gt;&amp;lt;model&amp;gt;&lt;br /&gt;  &amp;lt;data id=&amp;quot;foo&amp;quot;&amp;gt;42&amp;lt;/data&amp;gt;&lt;br /&gt;  &amp;lt;entity name=&amp;quot;Owner&amp;quot; id=&amp;quot;foo&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;/entity&amp;gt;&lt;br /&gt;&amp;lt;/model&amp;gt;&lt;br /&gt; &lt;br /&gt;Here is the transform:&lt;br /&gt; &lt;br /&gt;&amp;lt;!--?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?--&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; &lt;br /&gt;                xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;                xmlns:PerfectStorm=&amp;quot;urn:PerfectStorm&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;xsl:output method=&amp;quot;text&amp;quot; standalone=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;xsl:preserve-space elements=&amp;quot;*&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;xsl:for-each select=&amp;quot;model/entity&amp;quot;&amp;gt;&lt;br /&gt;public class &amp;lt;xsl:value-of select=&amp;quot;@name&amp;quot; /&amp;gt; {&lt;br /&gt;//&amp;lt;xsl:value-of select=&amp;quot;//data[@id=current()/@id]&amp;quot; /&amp;gt;&lt;br /&gt;}&lt;br /&gt;    &amp;lt;/xsl:for-each&amp;gt;&lt;br /&gt;  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt; &lt;br /&gt;This reads as loop through the model looking for entities (this is the xsl:for-each)&lt;br /&gt;If you find an entity write out some text (the class bit).&lt;br /&gt; &lt;br /&gt;Inside the class add a comment that is looked up from the data element with a matching id attribute.&lt;br /&gt;The // in the xpath expression means find me the first item that satisfies the criteria from the top of the document.&lt;br /&gt;It is a useful shorthand.&lt;br /&gt; &lt;br /&gt;The bits inside the &amp;quot;&lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=%20&amp;amp;referringTitle=xslt%20tutorial"&gt; &lt;/a&gt;&amp;quot; is a restriction clause.  The current() refers to the node that we are currently looking at in the xsl:for-each loop.&lt;br /&gt;Tests come in two flavors.  This is an equality test.  The other form is an xpath expression - in that case if the xpath expression finds a node then it is true, otherwise it is false.&lt;br /&gt; &lt;br /&gt;Coming soon ... calling templates and passing parameters.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 20:57:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: xslt tutorial 20080803085751P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Home&amp;version=7</link><description>&lt;div class="wikidoc"&gt;
&lt;b&gt;Project Description&lt;/b&gt;&lt;br /&gt;Perfect Storm is a code generation utility.&lt;br /&gt;&lt;br /&gt;It requires .NET 2.0 to be installed.&lt;br /&gt;It is written in C&amp;#35;, but that should not prevent it from being used to generate anything &amp;#40;it can make raw text files and xml - what else do you need&amp;#63;&amp;#41;.&lt;br /&gt;&lt;br /&gt;Currently Mono support is broken but it is intended to fix it.
&lt;br /&gt; &lt;br /&gt;This is a one stop code generation utility.&lt;br /&gt;It permits model driven development leaving the user in total control.&lt;br /&gt; &lt;br /&gt;The initial utility has the following syntax:&lt;br /&gt; &lt;br /&gt;CodeGen model transform target [name value]*&lt;br /&gt; &lt;br /&gt;This can be used to create a batch file which when run against the model document can be used to generate whatever source you want.&lt;br /&gt;Look in the demo folder for an example.&lt;br /&gt; &lt;br /&gt;The transform is an xslt document.&lt;br /&gt; &lt;br /&gt;Since the transforms and the model are entirely customizable by the user this can be used to create almost anything. &lt;br /&gt; &lt;br /&gt;This project was inspired by &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Code%20Generation%20in%20Microsoft.NET&amp;amp;referringTitle=Home"&gt;Code Generation in Microsoft.NET&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;The application now includes a small suite of xslt &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=Functions&amp;amp;referringTitle=Home"&gt;Functions&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;There are a number of &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=demo%20projects&amp;amp;referringTitle=Home"&gt;demo projects&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;Here is a quick &lt;a href="http://www.codeplex.com/PerfectStorm/Wiki/View.aspx?title=xslt%20tutorial&amp;amp;referringTitle=Home"&gt;xslt tutorial&lt;/a&gt;.  I am not claiming to be an expert, but I can read xslt.&lt;br /&gt;
&lt;/div&gt;</description><author>chriseyre2000</author><pubDate>Sun, 03 Aug 2008 20:37:33 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080803083733P</guid></item></channel></rss>