<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://xmladvice.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>XmlAdvice</title><link>http://xmladvice.com/blogs/default.aspx</link><description>Answers to XML Questions</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>Anyone here from Massachusetts?</title><link>http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx</link><pubDate>Wed, 18 Jul 2007 21:23:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:33065</guid><dc:creator>kim12345</dc:creator><slash:comments>1</slash:comments><description>&lt;p class="MsoNormal"&gt;&lt;font face="Arial"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;The Commonwealth just revised its policy on document formats to include OOXML. This is good because the old policy limited acceptable formats to &amp;quot;open standards.&amp;quot;&amp;nbsp; We need to let the Commonwealth know, though, that while we&amp;#39;re happy to see OOXML be accepted it is silly to create a policy that picks formats by name rather than by whether or not it gets the job done.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font face="Arial"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;What if I create a new format tomorrow that will meet the state&amp;#39;s goals?&amp;nbsp; I&amp;#39;m automatically shut out of doing business with the state because my format isn&amp;#39;t named in the policy.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font face="Arial"&gt;&lt;span style="font-size:10pt;font-family:Arial;"&gt;&amp;nbsp;If you&amp;#39;re from Massachusetts please write in about this.&amp;nbsp; The policy is open for comment until Friday and you can send via email to &lt;a href="mailto:standards@state.ma.us" title="blocked::mailto:standards@state.ma.us
mailto:standards@state.ma.us"&gt;standards@state.ma.us&lt;/a&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx&amp;amp;;subject=Anyone+here+from+Massachusetts%3f" target="_blank" title = "Post http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx&amp;amp;;title=Anyone+here+from+Massachusetts%3f" target="_blank" title = "Post http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx&amp;amp;title=Anyone+here+from+Massachusetts%3f" target="_blank" title = "Post http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx&amp;amp;;title=Anyone+here+from+Massachusetts%3f" target="_blank" title = "Post http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx&amp;amp;;title=Anyone+here+from+Massachusetts%3f&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/xml_in_massachusetts/archive/2007/07/18/Anyone-here-from-Massachusetts_3F00_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=33065" width="1" height="1"&gt;</description></item><item><title>Free Beer at Microsoft in Atlanta this Friday!</title><link>http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx</link><pubDate>Wed, 18 May 2005 21:04:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5946</guid><dc:creator>kaevans</dc:creator><slash:comments>5</slash:comments><description>&lt;P&gt;This Friday (May 20th) come to the &lt;A href="http://mappoint.msn.com/(e2xsnq45g1oi0d553edvdl45)/map.aspx?L=USA&amp;amp;C=34.04950%2c-84.31286&amp;amp;A=7.16667&amp;amp;P=|34.04950%2c-84.31286|1|1125+Sanctuary+Pkwy%2c+Alpharetta%2c+GA+30004|L1|"&gt;Microsoft Alpharetta office&lt;/A&gt; for the .NET Experience Expo! This is a free event where you can come hear all about some of the hottest topics for developers and architects.&amp;nbsp; This is a huge opportunity to learn more about what Microsoft is doing for developers (and it&amp;#8217;s a great chance to win an Xbox!)&amp;nbsp; All attendees will receive a free copy of beta 2 (yep, Team Suite... the full deal), a copy of "Introducing ASP.NET 2.0", and a swank .NET shirt.&amp;nbsp; We will have a reception at the end of the day (who can beat free beer?)&amp;nbsp; There will be partners attending as well in the partner pavillion (AmberPoint, Avanade, AVIcode, RDA, Internosis).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;But wait... there's more!&amp;nbsp; We will have a Hands On Lab room where you can play with the bits (BizTalk, SharePoint, VS 2005, and more), Ask the Experts sessions, an Ask the MVPs session with some of the Atlanta MVPs, and lots of time to interact with the Developer Evangelist team!&lt;/P&gt;
&lt;P&gt;Make sure to sign up using the registration link:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032274639&amp;amp;Culture=en-US"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032274639&amp;amp;Culture=en-US&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Come for the Experience&amp;#8230; stay for the beer. &lt;/P&gt;
&lt;P&gt;DATE: Friday, May 20th, 2005&lt;BR&gt;
&lt;P&gt;LOCATION: Microsoft Atlanta Office &lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 1125 Sanctuary Parkway&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; 3rd Floor&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; Alpharetta, GA 30004 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border=1&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH&gt;Time&lt;/TH&gt;
&lt;TH&gt;Line of Business Development&lt;/TH&gt;
&lt;TH&gt;patterns &amp;amp; practices&lt;/TH&gt;
&lt;TH&gt;Back Office Development&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;7:00 - 8:00&lt;/TD&gt;
&lt;TD align=middle colSpan=3&gt;Registration, Partner Pavillion, and Hands On Labs&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;8:30 - 9:15&lt;/TD&gt;
&lt;TD colSpan=3&gt;Opening Keynote - Visual Studio 2005 and Visual Studio Team System&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;9:30 - 10:30&lt;/TD&gt;
&lt;TD&gt;.NET Fx 2.0 - New Features for Windows Forms&lt;/TD&gt;
&lt;TD&gt;Service Orientation in Practice&lt;/TD&gt;
&lt;TD&gt;.NET Fx 2.0 - New Features for the CLR&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;10:45 - 11:45&lt;/TD&gt;
&lt;TD&gt;Mobile Clients &amp;amp; Compact Framework&lt;/TD&gt;
&lt;TD&gt;Enterprise Library&lt;/TD&gt;
&lt;TD&gt;.NET for Operations&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;11:45 - 1:00&lt;/TD&gt;
&lt;TD align=middle colSpan=3&gt;Lunch, Partner Pavillion, Hands On Labs, and Ask the Experts&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1:00 - 2:00&lt;/TD&gt;
&lt;TD&gt;Microsoft Office - A New Breed of Smart Clients&lt;/TD&gt;
&lt;TD&gt;Workflow and Business Process using BizTalk Server 2004&lt;/TD&gt;
&lt;TD&gt;SharePoint for the Developer&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2:15 - 3:15&lt;/TD&gt;
&lt;TD&gt;Deploying Smart Clients using ClickOnce&lt;/TD&gt;
&lt;TD&gt;Writing Secure Code&lt;/TD&gt;
&lt;TD&gt;Identity Management Using Active Directory, ADAM, and MIIS&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;3:30 - 4:30&lt;/TD&gt;
&lt;TD&gt;Web Applications - Innovations in ASP.NET 2.0&lt;/TD&gt;
&lt;TD&gt;Distributed Architecture on the .NET Platform&lt;/TD&gt;
&lt;TD&gt;SQL Server 2005 &amp;amp; SQL Reporting Services - What's in it for the Developers?&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4:45 - 5:30&lt;/TD&gt;
&lt;TD align=middle colSpan=3&gt;Closing Keynote&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;To register,sign up with the following link:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032274639&amp;amp;Culture=en-US"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032274639&amp;amp;Culture=en-US&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx&amp;amp;;subject=Free+Beer+at+Microsoft+in+Atlanta+this+Friday!" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx&amp;amp;;title=Free+Beer+at+Microsoft+in+Atlanta+this+Friday!" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx&amp;amp;title=Free+Beer+at+Microsoft+in+Atlanta+this+Friday!" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx&amp;amp;;title=Free+Beer+at+Microsoft+in+Atlanta+this+Friday!" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx&amp;amp;;title=Free+Beer+at+Microsoft+in+Atlanta+this+Friday!&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2005/05/18/5946.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5946" width="1" height="1"&gt;</description></item><item><title>Unit testing orchestrations anybody?</title><link>http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx</link><pubDate>Thu, 03 Jun 2004 03:49:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5950</guid><dc:creator>christoph</dc:creator><slash:comments>2</slash:comments><description>&lt;P&gt;Is anybody working on an &lt;A href="http://weblogs.asp.net/cschittko/archive/2004/06/02/147268.aspx"&gt;NUnit extension for BizTalk&lt;/A&gt; orchestrations?&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx&amp;amp;;subject=Unit+testing+orchestrations+anybody%3f" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx&amp;amp;;title=Unit+testing+orchestrations+anybody%3f" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx&amp;amp;title=Unit+testing+orchestrations+anybody%3f" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx&amp;amp;;title=Unit+testing+orchestrations+anybody%3f" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx&amp;amp;;title=Unit+testing+orchestrations+anybody%3f&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5950.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5950" width="1" height="1"&gt;</description></item><item><title>Enumerated types in Web services can BizTalk</title><link>http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx</link><pubDate>Thu, 03 Jun 2004 03:48:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5949</guid><dc:creator>christoph</dc:creator><slash:comments>2</slash:comments><description>&lt;P&gt;Having problems to send messages to web services that have enumerated types in their method definitions? Go &lt;A href="http://weblogs.asp.net/cschittko/archive/2004/05/29/144511.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx&amp;amp;;subject=Enumerated+types+in+Web+services+can+BizTalk" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx&amp;amp;;title=Enumerated+types+in+Web+services+can+BizTalk" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx&amp;amp;title=Enumerated+types+in+Web+services+can+BizTalk" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx&amp;amp;;title=Enumerated+types+in+Web+services+can+BizTalk" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx&amp;amp;;title=Enumerated+types+in+Web+services+can+BizTalk&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/06/02/5949.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5949" width="1" height="1"&gt;</description></item><item><title>BizTalk on a tablet</title><link>http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx</link><pubDate>Sun, 23 May 2004 17:52:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5948</guid><dc:creator>christoph</dc:creator><slash:comments>0</slash:comments><description>My thoughts on &amp;#8220;drawing&amp;#8221; Biztalk orchestrations are &lt;A href="http://weblogs.asp.net/cschittko/archive/2004/05/23/139876.aspx"&gt;here&lt;/A&gt;.
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx&amp;amp;;subject=BizTalk+on+a+tablet" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx&amp;amp;;title=BizTalk+on+a+tablet" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx&amp;amp;title=BizTalk+on+a+tablet" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx&amp;amp;;title=BizTalk+on+a+tablet" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx&amp;amp;;title=BizTalk+on+a+tablet&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/05/23/5948.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5948" width="1" height="1"&gt;</description></item><item><title>Added an Installation section to the BizTalkBabySteps</title><link>http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx</link><pubDate>Tue, 20 Apr 2004 04:41:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5947</guid><dc:creator>christoph</dc:creator><slash:comments>1</slash:comments><description>&lt;P&gt;I added some more info on installing pre-requisites that the BizTalk installer is missing to the &lt;A href="http://xmladvice.com/blogs/christophdotnet/articles/BizTalkBabySteps.aspx"&gt;BizTalk Baby Steps&lt;/A&gt;.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx&amp;amp;;subject=Added+an+Installation+section+to+the+BizTalkBabySteps" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx&amp;amp;;title=Added+an+Installation+section+to+the+BizTalkBabySteps" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx&amp;amp;title=Added+an+Installation+section+to+the+BizTalkBabySteps" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx&amp;amp;;title=Added+an+Installation+section+to+the+BizTalkBabySteps" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx&amp;amp;;title=Added+an+Installation+section+to+the+BizTalkBabySteps&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/christophdotnet/archive/2004/04/20/5947.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5947" width="1" height="1"&gt;</description></item><item><title>Binary XML, and InfoPath</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx</link><pubDate>Wed, 10 Mar 2004 22:39:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5945</guid><dc:creator>kaevans</dc:creator><slash:comments>4</slash:comments><description>&lt;P&gt;Some great stuff going on with &lt;a title="XML" href="http://www.w3.org/TR/REC-xml" target="_blank"&gt;XML&lt;/a&gt; lately.&amp;nbsp; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://weblogs.asp.net/jan/"&gt;Jan Tielens&lt;/A&gt; shows how to &lt;A href="http://weblogs.asp.net/jan/archive/2004/03/10/87466.aspx"&gt;use InfoPath to access a secondary datasource&lt;/A&gt;, such as a SharePoint list&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://weblogs.asp.net/mattwar/"&gt;Matt Warren &lt;/A&gt;then delves into some &lt;A href="http://www.tkachenko.com/blog/archives/000167.html"&gt;XML bestiary &lt;/A&gt;and shows a&lt;A href="http://weblogs.asp.net/mattwar/archive/2004/03/10/87445.aspx"&gt; binary XML parser based on XmlReader&lt;/A&gt;.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://weblogs.asp.net/cazzu/"&gt;Cazz&lt;/A&gt; (the one and only &lt;A href="http://www.google.com/search?hl=en&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;q=avid+bathreader"&gt;avid bathreader&lt;/A&gt;) shows how to &lt;A href="http://weblogs.asp.net/cazzu/archive/2004/03/09/86609.aspx"&gt;iterate over XPathNodeIterator nodes&lt;/A&gt;, provided that you know the underlying type that is being iterated over.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.dynamic-cast.com/mt-archives/000042.html"&gt;WSE 2.0 is code complete&lt;/A&gt;.&amp;nbsp; I am really late to the game posting this, but it is great news.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I really&amp;nbsp;hope I get some time to finish and post up the 2 code tidbits I have been working on to further the XML bestiary.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx&amp;amp;;subject=Binary+XML%2c+and+InfoPath" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx&amp;amp;;title=Binary+XML%2c+and+InfoPath" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx&amp;amp;title=Binary+XML%2c+and+InfoPath" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx&amp;amp;;title=Binary+XML%2c+and+InfoPath" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx&amp;amp;;title=Binary+XML%2c+and+InfoPath&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/10/5945.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5945" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>XML Data Islands in Mozilla</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx</link><pubDate>Wed, 03 Mar 2004 03:09:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5944</guid><dc:creator>kaevans</dc:creator><slash:comments>3</slash:comments><description>&lt;P&gt;No, Mozilla does not natively support Data Islands, but you can &lt;A href="http://www.mozilla.org/xmlextras/xmldataislands/"&gt;mimic data islands in Mozilla&lt;/A&gt; using a little bit of script.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx&amp;amp;;subject=XML+Data+Islands+in+Mozilla" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx&amp;amp;;title=XML+Data+Islands+in+Mozilla" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx&amp;amp;title=XML+Data+Islands+in+Mozilla" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx&amp;amp;;title=XML+Data+Islands+in+Mozilla" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx&amp;amp;;title=XML+Data+Islands+in+Mozilla&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/02/5944.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5944" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category></item><item><title>msdata Namespace</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx</link><pubDate>Tue, 02 Mar 2004 02:00:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5943</guid><dc:creator>kaevans</dc:creator><slash:comments>2</slash:comments><description>&lt;P&gt;Ever wonder if there is an &lt;a title="XML" href="http://www.w3.org/TR/REC-xml" target="_blank"&gt;XML&lt;/a&gt; Schema for the msdata namespace (urn:schemas-microsoft-com:xml-msdata) used by the DataSet generation wizard?&amp;nbsp; You can &lt;A href="http://schemas.microsoft.com/2003/07/msdata.xsd"&gt;find it here&lt;/A&gt;.&lt;FONT color=#0000ff size=2&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx&amp;amp;;subject=msdata+Namespace" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx&amp;amp;;title=msdata+Namespace" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx&amp;amp;title=msdata+Namespace" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx&amp;amp;;title=msdata+Namespace" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx&amp;amp;;title=msdata+Namespace&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/03/01/5943.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5943" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Using Typed DataSets with Web Services</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx</link><pubDate>Thu, 26 Feb 2004 23:58:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5942</guid><dc:creator>kaevans</dc:creator><slash:comments>8</slash:comments><description>&lt;P&gt;Someone asked me about using a typed DataSet on both ends of the wire using a web service. I honestly don't work with typed DataSets, but this question was to accomodate the client's existing architecture. We both tried it, and couldn't get it to work. This shouldn't be that hard,so I asked quite a few people... nada. Most admitted they just frankly don't use typed DataSets.So, I settledin behind the keyboard to fight through it. The answer turned out to be simple, but non obvious.&lt;/P&gt;
&lt;P&gt;Suppose you have a typed DataSet and you want to use that with a Web Service. If you plan on exposing that web service to any clients not running .NET (such as VB6 using the Soap Toolkit), then you should not return a typed DataSet from a web service method. For more background on the interoperability problems, read Aaron Skonnard's "&lt;A href="http://msdn.microsoft.com/msdnmag/issues/03/04/XMLFiles/default.aspx"&gt;Web Services and DataSets&lt;/A&gt;" article to see the effect on the WSDL when returning a DataSet. Aaron's article shows that one workaround is to use an XmlDataDocument and return that to the client as an XmlNode type. I quote that article often, but hadn't actually tried to implement the solution. &lt;/P&gt;
&lt;P&gt;I created a C# Class Library project file and left the name as ClassLibrary1. I added an &lt;A title=XML href="http://www.w3.org/TR/REC-xml" target=_blank&gt;XML&lt;/A&gt; Schema to the project, and dragged some tables from Northwind to the design surface. Then I tweaked the schema for a little while (I am a control freak about the XML Schema layout, no big deal). The reason for the library is so that I can create a typed DataSet that is used by both the WinForms client and the web service.&lt;/P&gt;
&lt;P&gt;In the same .sln, I added a C# Web Service project and named it WebService1 (clever, huh?). I set a project reference to ClassLibrary1 above so that I could use the typed DataSet. Here is the HelloWorld code, uncommented and modified:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;[WebMethod] &lt;BR&gt;public XmlNode HelloWorld() &lt;BR&gt;{ &lt;BR&gt;System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection("Data Source=L00261;User ID=sa;Password=asdfasdf;Initial Catalog=Northwind;"); &lt;BR&gt;cn.Open(); &lt;BR&gt;System.Data.SqlClient.SqlDataAdapter adap = new System.Data.SqlClient.SqlDataAdapter("SELECT * FROM CUSTOMERS",cn); &lt;BR&gt;ClassLibrary1.Document s = new ClassLibrary1.Document(); &lt;BR&gt;adap.Fill(s,"Customers"); &lt;BR&gt;adap.Fill(s,"Orders"); &lt;BR&gt;adap.Fill(s,"OrderDetails"); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;adap.Dispose(); &lt;BR&gt;cn.Close(); &lt;BR&gt;cn.Dispose(); &lt;BR&gt;System.Xml.XmlDataDocument doc = new XmlDataDocument(s); &lt;BR&gt;return doc; &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Using this web service method, the contents of the SOAP body will be the same as if you used:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;s.WriteXml(Response.OutputStream, XmlWriteMode.IgnoreSchema);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Once you have the web service running and you can invoke it from the ?wsdl test page (for example, my new service was &lt;A href="http://localhost/webservice1/service1.asmx?wsdl"&gt;http://localhost/webservice1/service1.asmx?wsdl&lt;/A&gt;), you can create the client. &lt;/P&gt;
&lt;P&gt;Create a WinForms client and set a project reference to ClassLibrary1. Then create a Web Reference to your service, using the WSDL endpoint specified above. Drop a DataGrid and a Button onto Form1. Double-click the button and add the following code:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;localhost.Service1 s = new localhost.Service1(); &lt;BR&gt;System.Xml.XmlNode n = s.HelloWorld(); &lt;BR&gt;ClassLibrary1.Document x = new ClassLibrary1.Document(); &lt;BR&gt;x.ReadXml( new System.Xml.XmlNodeReader(n),XmlReadMode.IgnoreSchema ); &lt;BR&gt;this.dataGrid1.DataSource = x;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;The trick to using the typed DataSet on both ends of the wire is that you have to specify &lt;FONT face="Courier New" size=2&gt;XmlReadMode.IgnoreSchema&lt;/FONT&gt;, or you will not see any data show up in your DataGrid control. &lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx&amp;amp;;subject=Using+Typed+DataSets+with+Web+Services" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx&amp;amp;;title=Using+Typed+DataSets+with+Web+Services" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx&amp;amp;title=Using+Typed+DataSets+with+Web+Services" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx&amp;amp;;title=Using+Typed+DataSets+with+Web+Services" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx&amp;amp;;title=Using+Typed+DataSets+with+Web+Services&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5942.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5942" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>"They Are Millionaires, I am Not"</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx</link><pubDate>Thu, 26 Feb 2004 18:31:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5941</guid><dc:creator>kaevans</dc:creator><slash:comments>7</slash:comments><description>&lt;P&gt;Douglas Reilly has &lt;A href="http://weblogs.asp.net/dreilly/archive/2004/02/23/78310.aspx"&gt;a great post &lt;/A&gt;on what seems to be a recurring theme throughout my career.&amp;nbsp; He talks about being tasked to write a system with features that he knows are fragile, implement it in such a way that maintenance and support costs are exponentially increased, and defend his position when he proposes what seems like a no-brainer fix to a problem that shouldn't even exist.&amp;nbsp; In summary:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&amp;#8220;They are millionaires, &lt;EM&gt;I am not.&lt;/EM&gt;&amp;#8220;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This statement wraps up what seems to be a pervasive topic in the business applications industry in general.&amp;nbsp;&amp;nbsp;&amp;nbsp;A company's owners make the decision to implement a system to help reduce costs, increase revenue, and hopefully both at the same time.&amp;nbsp; This vision is passed to the management for implementation, who then forms a team of developers to implement.&amp;nbsp; Contractors and consultants are brought on with specific skills to round out the existing teams' skills, and there is no looking back from that point forward.&amp;nbsp; Do not question the goals of the project, you have deadlines.&amp;nbsp; Do not question a particular feature set, one of the owners says it is essential.&amp;nbsp; Before architecting the system, nobody thought to check to see if there was already a product that performs this task for them and if it fits their needs.&lt;/P&gt;
&lt;P&gt;I have worked at several clients where I recognize within several minutes of talking with them about planned features for a system they are developing that their dream system is already implemented in BizTalk.&amp;nbsp; And I am not talking about stretching BizTalk to do some bizarre tasks that don't fit its purpose, I am talking about basic connected systems design.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For example, one application needs to interface with a data entry clerk, perform basic validation, then queue the message through several different legacy systems depending on the message's contents.&amp;nbsp; This is a classic example of the EAI scenario that BizTalk solves through Orchestration.&amp;nbsp; Rather than look at BizTalk (it costs too much), they instead invested 18 man-years to develop a system that was fragile, impossibly complex to configure, and built around a concept of reusability that made the system anything but reusable.&amp;nbsp; The developers' joke about the system was that it was a brick house built with absolutely no mortar.&amp;nbsp; Sure, you can add a new wing onto your house pretty quickly, but doing so means you have to tear down the entire top portion of your home.&amp;nbsp; I heard that portions of that system&amp;nbsp;are being re-evaluated for a face-lift using .NET and BizTalk&lt;/P&gt;
&lt;P&gt;Another application needed only to process inbound purchase order messages from any one of 25 diffferent customers, each with a different input format and transport protocol, and convert the messages to a common purchase order format.&amp;nbsp; This is a glowing example of the B2B scenario for BizTalk where you configure different receive ports and channels, configure several orchestrations, and you are able to reuse the process again and again for newly added customers with little configuration.&amp;nbsp; Again, the argument against BizTalk was cost.&amp;nbsp; This time, I presented the case in a very strong manner, demonstrating through lots of neat charts how the projected costs for the custom solution (12 man years at an average of $50K per developer, or around $600,000) compared to that of a BizTalk solution (roughly $350,000).&amp;nbsp; This system was being written with VB6 around the time that .NET was first introduced in Beta, so I pointed out architectural limitations of their current architecture and how it would make moving to a new platform difficult.&amp;nbsp; They went with the custom solution.&amp;nbsp; Just a few short years later, they are now rewriting the same system&amp;nbsp;with .NET and&amp;nbsp;BizTalk.&lt;/P&gt;
&lt;P&gt;This is not gloating, this is remorse.&amp;nbsp; Both customers are facing significant system rewrites with a tangible financial impact because they would not listen to the merits of using a product that was &amp;#8220;not invented here.&amp;#8221;&amp;nbsp; Of course, they would likely be looking at additional costs for upgrading to BizTalk 2004 in the near future since it absolutely rocks, but those costs should be dwarfed by the cost of rewriting a system from scratch to help solve some of the mysterious COM+ errors that suddenly appear in the Event Log without rhyme or reason.&lt;/P&gt;
&lt;P&gt;How far should a consultant push a concept when they know they are right?&amp;nbsp; Do you risk alienating the project manager because a contractor proposed a system that would reduce his project time from 9 months to 2?&amp;nbsp; Do you risk alienating the architect(s) on the project because their system is notoriously fragile yet&amp;nbsp;designed to some elusive requirements specification that nobody seems to remember exactly where the latest copy is?&lt;/P&gt;
&lt;P&gt;Douglas quotes a cynical, yet realistic view from The Career Programmer:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;I'm hired to write software, not to manage companies. Furthermore, if they want to pay me twice to write the same system, my bank makes little distinction when it comes to the deposits.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I see that simply keeping quiet and cashing checks is a definite option.&amp;nbsp; This keeps you employed as a consultant, and often the consultants who rock the boat the least are the ones with the greatest longevity on a project.&amp;nbsp; But why is there such little credit given to the career programmers who live and breathe technology enough to recommend solutions that will save hundreds of thousands of dollars?&lt;/P&gt;
&lt;P&gt;In questioning the credence given to the developers, I am reminded of a &lt;A href="http://www.ftponline.com/weblogger/forum.aspx?ID=1&amp;amp;DATE=02/23/2004"&gt;recent post by Jim Fawcette&lt;/A&gt;&amp;nbsp;about Wal-Marting of Software:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;EM&gt;I argued that outsourcing software posed other risks, because it essentially exports and helps nurture competition in the one area that is a key, strategic advantage for the &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:country-region w:st="on"&gt;U.S.&lt;/st1:country-region&gt; and, to a lesser degree, &lt;st1:place w:st="on"&gt;Europe&lt;/st1:place&gt;. Software IP is the key differentiator for our economies, a technology whose impact is pervasive. From the human genome project to Pixar's movies, software is the core technology that makes it work. &lt;/EM&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;EM&gt;This drew baffled looks. "Programming is a commodity, grunt work," said the board member. "Software isn't different from the textile industry," the CEO said. &lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;I think Jim's post hits the nail on the head.&amp;nbsp; Software exists to increase revenue or decrease expenses.&amp;nbsp; The people implementing that software should be paid the least amount&amp;nbsp;possible accorrding to the laws of supply and demand, and often business software&amp;nbsp;is viewed as a necessary evil or expense center&amp;nbsp;rather than as a profit center.&amp;nbsp; What many of the MBA types seem to forget from Management 101 in college is that investments depreciate in utility over time, and this effect is magnified for technological&amp;nbsp;investments.&amp;nbsp; Further, the associated&amp;nbsp;maintenance costs of&amp;nbsp;technological investments often increase over time.&amp;nbsp; Make or buy decisions are&amp;nbsp;often discussed right after &lt;A href="http://chiron.valdosta.edu/whuitt/col/regsys/maslow.html"&gt;Maslow's Hierarchy of Needs &lt;/A&gt;and &lt;A href="http://www.dmu.ac.uk/~jamesa/learning/motivlrn.htm"&gt;Herzberg's Motivational Theory&lt;/A&gt;, so why is make or buy such an overlooked concept in the&amp;nbsp;software industry?&amp;nbsp; Why is &amp;#8220;not invented here syndrome&amp;#8220; so pervasive throughout the corporate world's IT centers?&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;This week's misinformed prroject management quote is actually one from several years ago:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&lt;EM&gt;&amp;#8220;You say 12 man years like it will really take that long.&amp;nbsp; Remember, we have&amp;nbsp;a deadline here.&amp;#8221;&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx&amp;amp;;subject=%22They+Are+Millionaires%2c+I+am+Not%22" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx&amp;amp;;title=%22They+Are+Millionaires%2c+I+am+Not%22" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx&amp;amp;title=%22They+Are+Millionaires%2c+I+am+Not%22" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx&amp;amp;;title=%22They+Are+Millionaires%2c+I+am+Not%22" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx&amp;amp;;title=%22They+Are+Millionaires%2c+I+am+Not%22&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/26/5941.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5941" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/Project+Management/default.aspx">Project Management</category></item><item><title>RSS in Columbus, OH!</title><link>http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx</link><pubDate>Thu, 26 Feb 2004 03:55:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5916</guid><dc:creator>jjulian</dc:creator><slash:comments>0</slash:comments><description>Hell yeah &lt;a href="http://weblogs.asp.net/jeff/archive/2004/02/25/79797.aspx"&gt;"people"&lt;/a&gt;, I am going to Columbus!  Got my bags packed, &lt;a href="http://www.geekswithblogs.net/jwolfer"&gt;my friend formerly from Ohio&lt;/a&gt; driving, and the slide deck and examples.  This is going to be a blast.  

I want to thank &lt;a href="http://www.rassoc.com/gregr/weblog/"&gt;Greg Reinacker&lt;/a&gt; for donating a copy of Newsgator and 2 months of Online Services for the presentation.  It is the perfect prize.  If you are in the area, &lt;a href="http://geekswithblogs.net/drewby/"&gt;Drew&lt;/a&gt; has suggested a get together afterward, so you know it will be fun if Drew brings the camera.


&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx&amp;amp;;subject=RSS+in+Columbus%2c+OH!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx&amp;amp;;title=RSS+in+Columbus%2c+OH!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx&amp;amp;title=RSS+in+Columbus%2c+OH!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx&amp;amp;;title=RSS+in+Columbus%2c+OH!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx&amp;amp;;title=RSS+in+Columbus%2c+OH!&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/25/5916.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5916" width="1" height="1"&gt;</description></item><item><title>Calling all volunteers!</title><link>http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx</link><pubDate>Mon, 23 Feb 2004 03:57:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5915</guid><dc:creator>jjulian</dc:creator><slash:comments>0</slash:comments><description>INETA Academic, a committee that &lt;a href="http://www.geekswithblogs.net/jberes"&gt;Jason Beres&lt;/a&gt; and I run, are currently looking for volunteers for the Imagine Cup local competitions around the US.  If you are interested in some volunteering opportunities, like judging and speaking, &lt;a href="http://inetaacademic.com/imaginecup/"&gt;please go to the site&lt;/a&gt; and fill out the information.  At this point we will try and match you with schools in your area and make the connection for you.  After this point it will be up to you and the student to work out the logistics.  This is an exciting program and I hope to see a lot of you participate.

&lt;a href="http://inetaacademic.com/imaginecup/"&gt;http://inetaacademic.com/imaginecup/&lt;/a&gt;


&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx&amp;amp;;subject=Calling+all+volunteers!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx&amp;amp;;title=Calling+all+volunteers!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx&amp;amp;title=Calling+all+volunteers!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx&amp;amp;;title=Calling+all+volunteers!" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx&amp;amp;;title=Calling+all+volunteers!&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/22/5915.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5915" width="1" height="1"&gt;</description></item><item><title>Inside Indigo</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx</link><pubDate>Sun, 22 Feb 2004 04:20:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5940</guid><dc:creator>kaevans</dc:creator><slash:comments>3</slash:comments><description>&lt;P&gt;I am actually not a fan of individuals posting aggregated feeds, but I found a set of posts tonight that all hit around my areas of interest.&amp;nbsp; This will not be a common occurrence for me, as I am posting these mainly as a selfish set of pointers.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;For those that have been putting off looking at Indigo for awhile, there is a sample chapter of an upcoming book, &lt;A href="http://msdn.microsoft.com/library/en-us/dnlong/html/messagebus.asp?frame=true"&gt;&amp;#8220;Inside Indigo&amp;#8220; on MSDN.&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Klaus posts on&lt;A href="http://weblogs.asp.net/klaus.aschenbrenner/archive/2004/02/19/76440.aspx"&gt; including a service layer&lt;/A&gt; in the more traditional layer stack (Presentation, &lt;STRONG&gt;Service&lt;/STRONG&gt;, Business, Data).&amp;nbsp; This was an interview question for a position as an architect, and we debated the merits of this approach versus the implicit tradeoffs.&lt;/LI&gt;
&lt;LI&gt;Owen Allen states that the RTM of BizTalk 2004 will be &lt;A href="http://weblogs.asp.net/oallen/archive/2004/02/20/77174.aspx"&gt;available to MSDN subscribers on March 2nd&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Paul Wilson has been doing a lot of spelunking with the Garbage Collector in .NET.&amp;nbsp; Rather than link to all of the posts, &lt;A href="http://weblogs.asp.net/pwilson/archive/2004/02.aspx"&gt;just look at Paul's February posts&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Dare comments on Cazz' question of XSD as a type system.&amp;nbsp; &lt;A href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=b2e5fe03-2205-402a-be18-7da10a9a66fe"&gt;Is there an impedance mismatch &lt;/A&gt;when considering the serialization aspects of XmlSerializer alone, or should we further consider the schema as the type basis for a message contract?&amp;nbsp; For the former, XSD and CLR typing are simplistic, but the latter seems to spark many of the issues that Dare lists.&lt;/LI&gt;
&lt;LI&gt;Dr. Rys is posting on &lt;A href="http://sqljunkies.com/WebLog/mrys/archive/2004/02/19/1201.aspx"&gt;moving FOR &lt;a title="XML" href="http://www.w3.org/TR/REC-xml" target="_blank"&gt;XML&lt;/a&gt; Explicit to the new PATH mode&lt;/A&gt;.&amp;nbsp; Bryant Likes, the SQLXML guru, follows up &lt;A href="http://blogs.sqlxml.org/bryantlikes/posts/372.aspx"&gt;here &lt;/A&gt;and &lt;A href="http://blogs.sqlxml.org/bryantlikes/posts/374.aspx"&gt;here&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;I know this has been posted a lot, but for posterity I wanted to keep a pointer:&amp;nbsp; Benjamin M has &lt;A href="http://benjaminm.net/PermaLink.aspx?guid=27c7ec47-a47e-492e-b8a0-f8191c115bd5"&gt;a diagram of the progression of connected systems&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;On xml-dev, Michael Kay and Kurt Cagle take opposite approaches on the relative approachability of &lt;a title="XSLT" href="http://www.w3.org/TR/xslt" target="_blank"&gt;XSLT&lt;/a&gt; and XQuery.&amp;nbsp; &lt;A href="http://www.tkachenko.com/blog/archives/000170.html"&gt;Oleg questions Kay's statement&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Clemens tries to &lt;A href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=111dbe19-123a-497e-99b7-a095bab69465"&gt;clarify the terms &amp;#8220;Component&amp;#8221; and &amp;#8220;Service&amp;#8221;&lt;/A&gt; for the general developer's lexicon.&amp;nbsp; Good luck, since SOA right now seems commonly defined as &amp;#8220;Web Services.&amp;#8220;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;And one of my &lt;A href="http://blogs.msdn.com/mattwar/archive/2004/02/10/71085.aspx"&gt;new favorite reads&lt;/A&gt;, &lt;A href="http://weblogs.asp.net/mpowell/"&gt;Matt Powell&lt;/A&gt;, has a great post on &lt;A href="http://weblogs.asp.net/mpowell/archive/2004/02/20/77437.aspx"&gt;when to (not) consider SOA&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;Zapthink wrote up an article on &lt;A href="http://www.zapthink.com/report.html?id=ZAPFLASH-02162004"&gt;&lt;FONT color=#0000cc&gt;when SOA is not a good idea&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp; This is their list of when SOA is not a good idea:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;...when you have a homogeneous IT environment 
&lt;LI&gt;...when true real-time performance is critical 
&lt;LI&gt;...when things don't change 
&lt;LI&gt;...when tight coupling is a pro, not a con&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Of course the real message here is that&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Okay...the one company that has a homogeneous IT environment, you don't need SOA. 
&lt;LI&gt;Okay...some specific robotic control systems don't need SOA 
&lt;LI&gt;Okay...hmmm...I guess those folks who are still using Multiplan and Wordstar don't need SOA 
&lt;LI&gt;Okay...when you specifically don't want any of your systems to integrate with any other systems then you don't need SOA.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;So all six of the people who the above rules apply to - they&amp;nbsp;don't need SOA.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The rest of us should probably look pretty closely at SOA.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx&amp;amp;;subject=Inside+Indigo" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx&amp;amp;;title=Inside+Indigo" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx&amp;amp;title=Inside+Indigo" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx&amp;amp;;title=Inside+Indigo" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx&amp;amp;;title=Inside+Indigo&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/21/5940.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5940" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Final sample finished, well maybe not final :D</title><link>http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx</link><pubDate>Sat, 21 Feb 2004 04:48:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5914</guid><dc:creator>jjulian</dc:creator><slash:comments>2</slash:comments><description>Tonight I used the &lt;a href="http://itextsharp.sourceforge.net/"&gt;iTextSharp&lt;/a&gt; libraries to transform RSS into the  &lt;a href="http://itextsharp.sourceforge.net/"&gt;iTextSharp&lt;/a&gt; XML dialect, then transform it into PDF.  This library is awesome and open source.  If you haven't checked it out, I suggest you do.  It is a .NET implementation of a Java library set called &lt;a href="http://sourceforge.net/projects/itext"&gt;iText&lt;/a&gt; so some of the method names might bug you :D.  I forgot how clean (and dirty) C# can actually be until I opened the source to make it support stream as input to the XmlParser instead of the filepath string it supports today.


&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx&amp;amp;;subject=Final+sample+finished%2c+well+maybe+not+final+%3aD" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx&amp;amp;;title=Final+sample+finished%2c+well+maybe+not+final+%3aD" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx&amp;amp;title=Final+sample+finished%2c+well+maybe+not+final+%3aD" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx&amp;amp;;title=Final+sample+finished%2c+well+maybe+not+final+%3aD" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx&amp;amp;;title=Final+sample+finished%2c+well+maybe+not+final+%3aD&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/20/5914.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5914" width="1" height="1"&gt;</description></item><item><title>Working on my presentation</title><link>http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx</link><pubDate>Fri, 20 Feb 2004 04:34:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5913</guid><dc:creator>jjulian</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;font face="Arial" size="2"&gt;Lately I have been working on some samples for my presentation in Columbus (Drew) and Austin (Scott Belleware).&amp;nbsp; Tonight I came up with a new sample idea.&amp;nbsp; With iTunes 4.2 being one of my favorite applications and one of the only ones, outside of VS.NET, I have open all day, I thought it would be cool to build a transform from the playlist to RSS, based on the songs I have recently played.&amp;nbsp; It isn't a very real world example, unless you are the RIAA :D, but is a good sample on how do convert an existing XML file to RSS.&amp;nbsp; I will post the transform later after I clean it up some more.&amp;nbsp; The web app actually runs decently fast, knowing it has to go through my playlist (3546 songs).&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx&amp;amp;;subject=Working+on+my+presentation" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx&amp;amp;;title=Working+on+my+presentation" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx&amp;amp;title=Working+on+my+presentation" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx&amp;amp;;title=Working+on+my+presentation" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx&amp;amp;;title=Working+on+my+presentation&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/jjulian/archive/2004/02/19/5913.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5913" width="1" height="1"&gt;</description></item><item><title>Swallowing the Red Pill</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx</link><pubDate>Thu, 19 Feb 2004 15:50:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5939</guid><dc:creator>kaevans</dc:creator><slash:comments>33</slash:comments><description>&lt;P&gt;I accepted an offer from Microsoft: I will be swallowing the red pill on March 1st.&amp;nbsp; My new position is Developer Evangelist for the telco vertical, and I will be based in Atlanta.&amp;nbsp; &lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx&amp;amp;;subject=Swallowing+the+Red+Pill" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx&amp;amp;;title=Swallowing+the+Red+Pill" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx&amp;amp;title=Swallowing+the+Red+Pill" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx&amp;amp;;title=Swallowing+the+Red+Pill" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx&amp;amp;;title=Swallowing+the+Red+Pill&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/19/5939.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5939" width="1" height="1"&gt;</description></item><item><title>The "a-" Designation Not Just Within Microsoft</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx</link><pubDate>Wed, 18 Feb 2004 19:10:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5938</guid><dc:creator>kaevans</dc:creator><slash:comments>4</slash:comments><description>&lt;P&gt;A new hire is meandering around the work area at a company I have consulted with.&amp;nbsp; The HR manager walks in.&lt;/P&gt;
&lt;P&gt;&amp;#8221;Hi, welcome (name withheld to protect the innocent), we are so glad to have you.&amp;nbsp; Here is where your cube is, if you have any questions let me know.&amp;nbsp; We are so glad to have you join us!&amp;nbsp; Let me walk you through the area.&amp;#8221;&lt;/P&gt;
&lt;P&gt;Stops in front of my cube...&lt;/P&gt;
&lt;P&gt;&amp;#8220;You can tell the associates from the temps based on the company name on the name badge.&amp;#8221;&lt;/P&gt;
&lt;P&gt;Inside 4 sentences and literally 30 seconds, the HR manager had degraded the consultants and contractors as &amp;#8220;temps&amp;#8221;.&amp;nbsp; I found it ironic that the manager did not find it necessary to introduce any of the developers that the new associate would be working with... but she felt compelled to introduce an admin assistant who happened to be one of the only full-timers in sight.&lt;/P&gt;
&lt;P&gt;OK, not &amp;#8220;project management&amp;#8221;, but Dilbert-esque all the same.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx&amp;amp;;subject=The+%22a-%22+Designation+Not+Just+Within+Microsoft" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx&amp;amp;;title=The+%22a-%22+Designation+Not+Just+Within+Microsoft" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx&amp;amp;title=The+%22a-%22+Designation+Not+Just+Within+Microsoft" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx&amp;amp;;title=The+%22a-%22+Designation+Not+Just+Within+Microsoft" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx&amp;amp;;title=The+%22a-%22+Designation+Not+Just+Within+Microsoft&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5938.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5938" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/Project+Management/default.aspx">Project Management</category></item><item><title>Kicking the Dead Horse:  More on Exceptions</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx</link><pubDate>Wed, 18 Feb 2004 15:30:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5937</guid><dc:creator>kaevans</dc:creator><slash:comments>5</slash:comments><description>&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;An interesting thread on the &lt;A href="http://weblogs.asp.net/brada/archive/2004/02/15/73535.aspx"&gt;API Design Hall of Shame &lt;/A&gt;on Brad Abrams' blog.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;I have a question, how was the decision for these 2 classes ctor parameters made...&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;Constructor for ArgumentNullException&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;public ArgumentNullException( string paramName, string message)&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;Constructor for ArgumentException&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;public ArgumentException( string message, string paramName)&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Well, in short Jeff, this was a design mistake. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;In fact it is up on the internal &amp;#8220;API Design Hall of Shame&amp;#8221;. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Here is the text from that site:&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;ArgumentNullException does not follow the constructor pattern given in the &lt;A href="http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconnetframeworkdesignguidelines.asp"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Design Guidelines spec&lt;/SPAN&gt;&lt;/A&gt;. &lt;BR&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Result:&lt;/B&gt; Habit wins out and people commonly type: &lt;BR&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;throw new ArgumentNullException (&amp;#8220;must pass an employee name&amp;#8221;);&lt;/SPAN&gt; &lt;BR&gt;rather than: &lt;BR&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;throw new ArgumentNullException (&amp;#8220;Name&amp;#8221;, &amp;#8220;must pass an employee name&amp;#8221;);&lt;/SPAN&gt; &lt;BR&gt;so we end up with error message such as: &lt;BR&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'"&gt;Unhandled Exception: System.ArgumentNullException: Value cannot be null. Parameter name: must pass employee name &lt;BR&gt;&lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Lesson&lt;/B&gt;: Just follow the pattern!&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;Got any other examples that should be in my API Design Hall of Shame?&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;Even more interesting are the comments to this post, where Dwayne &lt;A href="http://weblogs.asp.net/brada/archive/2004/02/15/73535.aspx#75054"&gt;points out&lt;/A&gt;:&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;There is no base data access exception for the data access libraries. For example, the System.Data.SqlClient.SqlException derives from System.SystemException. So does the System.Data.OracleClient.OracleException class. This makes it more difficult to create a common data access interface that uses these classes internally but throws an implementation agnostic exception. It would have been nice if they had a System.Data.DataException that these exceptions derived from, so that my interfaces could be consistent. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;Great point.&amp;nbsp; It would be convenient to have a System.Data.DataException, where each provider extends from that base type.&amp;nbsp; Instead, you have two choices:&amp;nbsp; explicitly filter for each provider that your layer supports, or catch System.SystemException... which is &lt;A href="http://xmladvice.com/blogs/kaevans/archive/2004/02/04/5930.aspx"&gt;still not optimal&lt;/A&gt;.&amp;nbsp; However, this is leaps and bounds better than VB's prior &amp;#8220;On Error&amp;#8220; statement, where you were to explictly check for the error number in an active error label.&amp;nbsp; Exceptions based on rich type information are a big win for the .NET framework.&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://www.raboof.com/"&gt;Atif&lt;/A&gt; then &lt;A href="http://weblogs.asp.net/brada/archive/2004/02/15/73535.aspx#75411"&gt;follows up &lt;/A&gt;on the Exceptions hierarchy with:&lt;/P&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;I get the impression that the various teams could not always agree on the best place to branch off their exception hierarchy. For example, some exceptions from the framework are based off ApplicationException. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal dir=ltr style="MARGIN: 0in 0in 0pt"&gt;This is actually noted in Chapter 7 (IIRC) of Richter's book, that there is inconsistency in the framework itself on the appropriate use of ApplicationException and SystemException.&amp;nbsp; He notes that SystemException intends to capture all of the exceptions relating to the framework, but this guideline was not consistently followed.&amp;nbsp; The general guidelines should be:&lt;/P&gt;
&lt;UL dir=ltr&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;If you have a procedure that checks arguments and throws exceptions if the arguments are null or out of range, by all means use the ArgumentOutOfRangeException and ArgumentNullException&amp;nbsp;(noting the parameter order shift explained above).&amp;nbsp;&amp;nbsp;Using a custom exception provides no extra information.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;If your method&amp;nbsp;is created to open a file, then throw a System.IO exception.&amp;nbsp; The user should expect an IO exception possibility when they are asking to work with a file.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;If your method is supposed to provide information from&amp;nbsp;the database and employs a caching scheme for a local file, exposing a&amp;nbsp;System.IO exception makes little sense because the consumer has no concept that there is a file involved... they were asking for something from the database.&amp;nbsp; In this case, throw a custom exception derived from ApplicationException, and in its constructor, provide the InnerException argument containing the System.IO.Exception.&amp;nbsp;&amp;nbsp;The informaiton is preserved and much more meaningful to the consumer of your method.&amp;nbsp;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx&amp;amp;;subject=Kicking+the+Dead+Horse%3a++More+on+Exceptions" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx&amp;amp;;title=Kicking+the+Dead+Horse%3a++More+on+Exceptions" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx&amp;amp;title=Kicking+the+Dead+Horse%3a++More+on+Exceptions" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx&amp;amp;;title=Kicking+the+Dead+Horse%3a++More+on+Exceptions" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx&amp;amp;;title=Kicking+the+Dead+Horse%3a++More+on+Exceptions&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/18/5937.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5937" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>XPath-Based Filtering With Pull-Based XML Parsing</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx</link><pubDate>Mon, 16 Feb 2004 14:36:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5936</guid><dc:creator>kaevans</dc:creator><slash:comments>1</slash:comments><description>&lt;P&gt;Some very interesting work has been going on with the classes in the System.Xml namespace.&amp;nbsp; Daniel Cazzulino blogs about an XseReader implementation he has been working on for providing &lt;A href="http://weblogs.asp.net/cazzu/posts/XseIntro.aspx"&gt;&lt;a title="XML" href="http://www.w3.org/TR/REC-xml" target="_blank"&gt;XML&lt;/a&gt; Streaming Events&lt;/A&gt;.&amp;nbsp; I had been using a similar implementation for trying to write a .NET version of an RssValidatingReader awhile back, but gave up due to the complexity of managing an ambiguous stack for co-occurrence validation.&amp;nbsp; Oleg commented on the implementation and notes the use of an XPathNavigator over an XmlReader to provide a &lt;A href="http://www.tkachenko.com/blog/archives/000159.html"&gt;ForwardOnlyXPathNavigator&lt;/A&gt;, a hypthetical implementation that Dare mentioned in his &lt;A href="http://www.sys-con.com/xml/articleprint.cfm?id=727"&gt;XML Journal article&lt;/A&gt;.&amp;nbsp; Dare then comments on his blog about the new &lt;A href="http://www.idealliance.org/papers/xml2001/papers/html/05-01-01.html"&gt;implementation he has been considering, XPathReader&lt;/A&gt;, which is similar to the implementation in BizTalk 2004.&lt;/P&gt;
&lt;P&gt;I have been working with BizTalk 2004 for about 2 months now here and there, mostly spelunking to find out more about ways to extend it using WSE and looking at how it implements XML Schemas.&amp;nbsp; I hadn't run across the types in BizTalk that Dare and Oleg mentioned in their posts, so I brought out Reflector... sure enough, there in the GAC:&lt;/P&gt;
&lt;P&gt;c:\windows\assembly\gac\microsoft.biztalk.xpathreader\3.0.1.0__31bf3856ad364e35\microsoft.biztalk.xpathreader.dll&lt;/P&gt;
&lt;P&gt;The XPathReader, XPathExpression, and XPathCollection types seem to be the core classes for the implementation.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx&amp;amp;;subject=XPath-Based+Filtering+With+Pull-Based+XML+Parsing" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx&amp;amp;;title=XPath-Based+Filtering+With+Pull-Based+XML+Parsing" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx&amp;amp;title=XPath-Based+Filtering+With+Pull-Based+XML+Parsing" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx&amp;amp;;title=XPath-Based+Filtering+With+Pull-Based+XML+Parsing" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx&amp;amp;;title=XPath-Based+Filtering+With+Pull-Based+XML+Parsing&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/16/5936.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5936" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Anonymous Methods and Higher-Order Procedures in C#</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx</link><pubDate>Thu, 12 Feb 2004 16:24:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5935</guid><dc:creator>kaevans</dc:creator><slash:comments>1</slash:comments><description>&lt;P&gt;Steve Maine has a great article on &lt;A href="http://msdnaa.net/Resources/display.aspx?ResID=2488"&gt;using anonymous methods and higher-order procedures in C#&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;A point not necessarily highlighted in the article's text but rather through the code examples&amp;nbsp;is that&amp;nbsp;not all problems are solved through inheritance.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Suppose you have a class that provides methods for working with a certain datastructure.&amp;nbsp; You might prefer thhe consumer of the class not be required to inherit from your class to effectively use it, and it is not feasible to require the consumer to implement an interface to support your behavior.&amp;nbsp; A great design pattern involves the use of function pointers, implemented as delegates in .NET.&lt;/P&gt;
&lt;P&gt;Consider the example below:&amp;nbsp; I have an XmlDOMNavigator type that is responsible for loading &lt;A title=XML href="http://www.w3.org/TR/REC-xml" target=_blank&gt;XML&lt;/A&gt; and providing a reference to its root element.&amp;nbsp; Rather than define the various navigation methods that could possibly occur within the XmlDOMNavigator method, we let the consumer define the implementation of the Traverse method by providing a method that accepts an XmlNode type and returns an XmlNode type.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;using System;&lt;BR&gt;using System.Xml;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;namespace XMLAdvice &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;class TreeNavigatorSample&lt;BR&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;[STAThread]&lt;BR&gt;&amp;nbsp;&amp;nbsp;static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlDOMNavigator nav = new XmlDOMNavigator();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nav.Load(@"C:\temp\XMLFile1.xml");&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyNavigator myNav = new MyNavigator();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Define the move method's type&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlDOMNavigator.NavigationMethod MoveChildMethod;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Set the type to a new instance&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MoveChildMethod = new XmlDOMNavigator.NavigationMethod(myNav.MoveFirstChild);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlNode nodeRef = nav.DocumentElement;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(null != nodeRef)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(nodeRef.Name);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nodeRef = nav.Traverse(nodeRef,MoveChildMethod); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;public class MyNavigator&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;public XmlNode MoveFirstChild(XmlNode context)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(context.HasChildNodes)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return context.FirstChild;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;public class XmlDOMNavigator&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;private XmlDocument _doc = new XmlDocument();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;public delegate XmlNode NavigationMethod(XmlNode n);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;public void Load(string path)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_doc.Load(path);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;public XmlNode DocumentElement&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return _doc.DocumentElement;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;public XmlNode Traverse(XmlNode context, NavigationMethod customMethod)&lt;BR&gt;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return customMethod(context);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx&amp;amp;;subject=Anonymous+Methods+and+Higher-Order+Procedures+in+C%23" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx&amp;amp;;title=Anonymous+Methods+and+Higher-Order+Procedures+in+C%23" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx&amp;amp;title=Anonymous+Methods+and+Higher-Order+Procedures+in+C%23" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx&amp;amp;;title=Anonymous+Methods+and+Higher-Order+Procedures+in+C%23" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx&amp;amp;;title=Anonymous+Methods+and+Higher-Order+Procedures+in+C%23&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/12/5935.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5935" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Assembly Caching and XmlSerializer</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx</link><pubDate>Wed, 11 Feb 2004 21:11:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5934</guid><dc:creator>kaevans</dc:creator><slash:comments>10</slash:comments><description>&lt;P&gt;&lt;A href="http://weblogs.asp.net/pwilson"&gt;Paul Wilson&lt;/A&gt; emailed me with some questions regarding perceived memory leaks related to System.Xml.Serialization.XmlSerializer.  I questioned whether it would be a &amp;#8220;memory leak&amp;#8221;, but pinged &lt;A href="http://weblogs.asp.net/cschittko"&gt;Christoph Schittko &lt;/A&gt;for some backup evidence.  He said he doubted it as well, else web services everywhere would be falling on their faces.  I pointed him to Doug Purdy's post on&lt;A href="http://www.gotdotnet.com/team/douglasp/default.aspx?key=2003-02-10T08:00:00Z"&gt; inspecting theXmlSerializer's interim assembly&lt;/A&gt;, and Chris Sells' utility for &lt;A href="http://www.sellsbrothers.com/tools/#XmlSerializerPreCompiler"&gt;precompiling XmlSerializer types&lt;/A&gt;.&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;Paul emailed back that, in fact, they pinpointed the leak, and it was related to the XmlSerializer.  But it is not a memory leak... it is a dynamically created assembly &amp;#8220;leak&amp;#8220;, and is not by accident, but rather by design.&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;XmlSerializer manages the generation and execution of per-type reader/writer pairs. These pairs are dynamically generated types that extend the internal types XmlSerializationReader and XmlSerializationWriter, respectively. When instantiating an XmlSerializer, you must provide a System.Type object that represents the type the new serializer object will be used with. To avoid generating redundant assemblies, the XmlSerializer constructor looks in an AppDomain-wide cache of generated reader/writer assemblies and reuses the cached assembly if one is found. If one is not found, the XmlSerializer constructor generates a new dynamic assembly by reflecting against the presented System.Type object. This new assembly is added to the cache so subsequent XmlSerializer objects can reuse it, reducing overall code size and codegen overhead. Unfortunately, the cache only works for some constructors of XMLSerializer, since the lookup index gets more complex with more overrides. Users can cache the serializer themselves&amp;#8212;it's freethreaded so you can serialize across threads.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/01/11/webserv/"&gt;[Don Box, MSDN Magazine, House of Web Services, November 2001]&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Christoph followed up with (via IM):&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;I got used to the pattern of having a static serializer instance in my apps ... Just instantiate it once, assign it to a private or internal static property somewhere in the assembly.  Then you don't even need to hit the cache ...&lt;/P&gt;
&lt;P&gt;It's also interesting to note, that System.Messaging does not rely on the cache and keeps its own cache around.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;For those that haven't read it, you really need to read Christoph's blog entry on &lt;A href="http://weblogs.asp.net/cschittko/articles/33045.aspx"&gt;troubleshooting the XmlSerializer&lt;/A&gt;.&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx&amp;amp;;subject=Assembly+Caching+and+XmlSerializer" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx&amp;amp;;title=Assembly+Caching+and+XmlSerializer" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx&amp;amp;title=Assembly+Caching+and+XmlSerializer" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx&amp;amp;;title=Assembly+Caching+and+XmlSerializer" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx&amp;amp;;title=Assembly+Caching+and+XmlSerializer&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/11/5934.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5934" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Project Management</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx</link><pubDate>Mon, 09 Feb 2004 03:42:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5933</guid><dc:creator>kaevans</dc:creator><slash:comments>5</slash:comments><description>&lt;P&gt;I thought I would add a category for rants on Project Management practices.&lt;/P&gt;
&lt;P&gt;Misinformed PM quote of the week:&lt;/P&gt;
&lt;P&gt;&amp;#8220;Our business model simply does not allow confirming requirements before construction.&amp;nbsp; The software development team is helping to shape requirements by confirming newly introduced functionality.&amp;#8221;&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx&amp;amp;;subject=Project+Management" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx&amp;amp;;title=Project+Management" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx&amp;amp;title=Project+Management" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx&amp;amp;;title=Project+Management" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx&amp;amp;;title=Project+Management&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5933.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5933" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/Project+Management/default.aspx">Project Management</category></item><item><title>XML Validation Against a Schema and a DTD With Namespaces</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx</link><pubDate>Mon, 09 Feb 2004 02:45:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5932</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><description>&lt;A href="http://weblogs.asp.net/slivingstone/"&gt;Steven Livingstone&lt;/A&gt; has a great tip on &lt;A href="http://weblogs.asp.net/slivingstone/archive/2004/02/07/69066.aspx"&gt;validation using DTDs and Schemas against an instance document that includes namespaces&lt;/A&gt;.
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx&amp;amp;;subject=XML+Validation+Against+a+Schema+and+a+DTD+With+Namespaces" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx&amp;amp;;title=XML+Validation+Against+a+Schema+and+a+DTD+With+Namespaces" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx&amp;amp;title=XML+Validation+Against+a+Schema+and+a+DTD+With+Namespaces" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx&amp;amp;;title=XML+Validation+Against+a+Schema+and+a+DTD+With+Namespaces" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx&amp;amp;;title=XML+Validation+Against+a+Schema+and+a+DTD+With+Namespaces&amp;amp;;top=1" target="_blank" title = "Post http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5932.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://xmladvice.com/aggbug.aspx?PostID=5932" width="1" height="1"&gt;</description><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/XML+1.0/default.aspx">XML 1.0</category><category domain="http://xmladvice.com/blogs/kaevans/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Set Property in XsltArgumentList Extension Object: Ugly Hack</title><link>http://xmladvice.com/blogs/kaevans/archive/2004/02/08/5931.aspx</link><pubDate>Sun, 08 Feb 2004 23:16:00 GMT</pubDate><guid isPermaLink="false">3e274673-4f98-48a3-a750-5e76696965bc:5931</guid><dc:creator>kaevans</dc:creator><slash:comments>7</slash:comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Paul Duncan asks in the &lt;A href="http://groups.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;c2coff=1&amp;amp;safe=off&amp;amp;group=microsoft.public.xsl"&gt;microsoft.public.xsl &lt;/A&gt;list &lt;A href="http://groups.google.com/groups?q=Duncan+extension+object+set+group:microsoft.public.*&amp;amp;hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8&amp;amp;c2coff=1&amp;amp;safe=off&amp;amp;selm=eTOYghp6DHA.2996%40tk2msftngp13.phx.gbl&amp;amp;rnum=1"&gt;how to set a property for an XSLT extension object.&lt;/A&gt;&amp;nbsp; Yes, there is a way to do set the property of an XSLT extension object in .NET.&amp;nbsp; But...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;This is such an ugly hack, I feel dirty posting the solution.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;First, the XSLT transformation that allows the user to set a property in an XSLT extension object.&amp;nbsp; Note that I use an xsl:variable to contain the result of the method call.&amp;nbsp; This allows me to store the method return without including it in the XSLT result tree.&amp;nbsp; I also named the call with &amp;#8220;set_&amp;#8220;, accessing the property setter as a method.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="1.0"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;xsl:stylesheet&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="1.0"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;xsl&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="http://www.w3.org/1999/XSL/Transform"&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"&gt;:&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;user&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;="urn:net-xmlandasp:examples"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;xsl:template&lt;/SPAN&gt;&lt;SPAN style="COLOR: fuchsia"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;match&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="/"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;xsl:variable&lt;/SPAN&gt;&lt;SPAN style="COLOR: fuchsia"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="foo"&lt;/SPAN&gt;&lt;SPAN style="COLOR: fuchsia"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;select&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="user:set_MyProperty(.)"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;xsl:value-of&lt;/SPAN&gt;&lt;SPAN style="COLOR: fuchsia"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;select&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="user:SayHello()"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: maroon"&gt;xsl:template&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'"&gt;xsl:stylesheet&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;FONT face=Arial color=#000000&gt;Here is the C# code for providing the extension object to the XslTransform.Transform method:&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; System.IO;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; System.Text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; System.Xml;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; System.Xml.XPath;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; System.Xml.Xsl;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; XMLAdvice &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; UglyXSLTHackTester&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[STAThread]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;Main&lt;/st1:place&gt;(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;XslTransform trans = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.Xml.Xsl.XslTransform();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;trans.Load(@"C:\temp\XSLTFile1.xslt");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;XPathDocument doc = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; XPathDocument(@"C:\temp\XMLFile1.xml");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;System.Xml.Xsl.XsltArgumentList xslArgs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; System.Xml.Xsl.XsltArgumentList();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;MyExtension extension = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; MyExtension();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;xslArgs.AddExtensionObject("urn:net-xmlandasp:examples",extension);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;trans.Transform(doc,xslArgs,Console.Out,&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; MyExtension&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; _myProp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; MyProperty&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt;{&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; _myProp;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; {_myProp = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;