<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Marcelo's WebLog</title><link>http://blogs.msdn.com/marcelolr/default.aspx</link><description>Improving the world one entity at a time</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows 7 - 7 Second Demos</title><link>http://blogs.msdn.com/marcelolr/archive/2009/10/24/windows-7-7-second-demos.aspx</link><pubDate>Sat, 24 Oct 2009 22:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9912511</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9912511.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9912511</wfw:commentRss><description>&lt;P&gt;Very, very cute of showing off some new Windows love - it even fits my attention span.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/en/us/default.aspx"&gt;http://www.microsoft.com/en/us/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Don't know if this will still be around a few months from now, so for future reference, these are "7 second demos".&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912511" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/Windows/default.aspx">Windows</category></item><item><title>MSXML4 SP3, now with a CAB</title><link>http://blogs.msdn.com/marcelolr/archive/2009/10/01/msxml4-sp3-now-with-a-cab.aspx</link><pubDate>Fri, 02 Oct 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9901970</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9901970.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9901970</wfw:commentRss><description>&lt;P&gt;Yep,&amp;nbsp;the redistributable CAB for MSXML4 SP3 is now available for download. Now you can deploy the latest / greatest version MSXML4 along with your app.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=7F6C0CB4-7A5E-4790-A7CF-9E139E6819C0&amp;amp;displaylang=en"&gt;http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=7F6C0CB4-7A5E-4790-A7CF-9E139E6819C0&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Remember, of course, that MSXML4 has been superseded by MSXML6, so you're better off upgrading; but if you can't because for example you don't own the component that has the dependency, the latest service pack contains the latest fixes.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901970" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/XML/default.aspx">XML</category></item><item><title>ADO.NET Data Services - CTP and more</title><link>http://blogs.msdn.com/marcelolr/archive/2009/09/02/ado-net-data-services-ctp-and-more.aspx</link><pubDate>Thu, 03 Sep 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9890160</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9890160.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9890160</wfw:commentRss><description>&lt;P&gt;In case you haven't seen this yet, the CTP release has been announced at &lt;A href="http://blogs.msdn.com/astoriateam/archive/2009/08/31/ado-net-data-services-v1-5-ctp2-now-available-for-download.aspx" mce_href="http://blogs.msdn.com/astoriateam/archive/2009/08/31/ado-net-data-services-v1-5-ctp2-now-available-for-download.aspx"&gt;http://blogs.msdn.com/astoriateam/archive/2009/08/31/ado-net-data-services-v1-5-ctp2-now-available-for-download.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Following the philosophy that folks like tables, here you go.&lt;/P&gt;
&lt;TABLE&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH&gt;Feature&lt;/TH&gt;
&lt;TH&gt;Available in CTP1?&lt;/TH&gt;
&lt;TH&gt;New in CTP2&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Projections&lt;/TD&gt;
&lt;TD&gt;No&lt;/TD&gt;
&lt;TD&gt;Yes!&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Data Binding&lt;/TD&gt;
&lt;TD&gt;Yes&lt;/TD&gt;
&lt;TD&gt;API cleanup for types&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Row Count&lt;/TD&gt;
&lt;TD&gt;Yes&lt;/TD&gt;
&lt;TD&gt;Bug fixes&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Feed Customization&lt;/TD&gt;
&lt;TD&gt;Yes&lt;/TD&gt;
&lt;TD&gt;Renamed attributes and more flexibility&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Server Driven Paging&lt;/TD&gt;
&lt;TD&gt;Yes&lt;/TD&gt;
&lt;TD&gt;Client library support&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Enhanced BLOB support&lt;/TD&gt;
&lt;TD&gt;Yes&lt;/TD&gt;
&lt;TD&gt;Client library support&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Request Pipeline&lt;/TD&gt;
&lt;TD&gt;No&lt;/TD&gt;
&lt;TD&gt;Yes!&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;New Provider Interface&lt;/TD&gt;
&lt;TD&gt;Yes&lt;/TD&gt;
&lt;TD&gt;API refactoring&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;You probably want to keep checking the blog, as there are some posts coming that will dive deeper into some of the new features.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9890160" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/ADO.NET+Data+Services/default.aspx">ADO.NET Data Services</category></item><item><title>Problems when installing SQL Server 2005 on an upgraded Windows XP SP3 with MSXML6 SP2</title><link>http://blogs.msdn.com/marcelolr/archive/2009/08/31/problems-when-installing-sql-server-2005-on-an-upgraded-windows-xp-sp3-with-msxml6-sp2.aspx</link><pubDate>Tue, 01 Sep 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9888843</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9888843.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9888843</wfw:commentRss><description>&lt;P&gt;As mentioned in the &lt;A href="http://blogs.msdn.com/sqlblog/archive/2009/08/28/sql-server-2005-setup-fails-when-msxml-core-services-6-0-service-pack-2-has-already-been-installed.aspx" mce_href="http://blogs.msdn.com/sqlblog/archive/2009/08/28/sql-server-2005-setup-fails-when-msxml-core-services-6-0-service-pack-2-has-already-been-installed.aspx"&gt;SQL Server Support Blog&lt;/A&gt;, you may find an issue installing SQL Server 2005 if you install MSXML Core Services 6.0 Service Pack 2 on Windows XP SP2, then upgrade to Windows XP SP3, then try the SQL install.&lt;/P&gt;
&lt;P&gt;Check out that post for more details, along with the &lt;A href="http://support.microsoft.com/kb/968749" mce_href="http://support.microsoft.com/kb/968749"&gt;KB for the problem&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9888843" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.msdn.com/marcelolr/archive/tags/XML/default.aspx">XML</category></item><item><title>ADO.NET Data Services and PHP</title><link>http://blogs.msdn.com/marcelolr/archive/2009/08/21/ado-net-data-services-and-php.aspx</link><pubDate>Sat, 22 Aug 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9879043</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9879043.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9879043</wfw:commentRss><description>&lt;P&gt;Data, data, data everywhere... Go ahead and click - code samples ahead.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/interoperability/archive/2009/08/21/a-new-bridge-for-php-developers-to-net-through-rest-php-toolkit-for-ado-net-data-services.aspx"&gt;http://blogs.msdn.com/interoperability/archive/2009/08/21/a-new-bridge-for-php-developers-to-net-through-rest-php-toolkit-for-ado-net-data-services.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9879043" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/ADO.NET+Data+Services/default.aspx">ADO.NET Data Services</category></item><item><title>ADO.NET Data Services Cheat Sheet</title><link>http://blogs.msdn.com/marcelolr/archive/2009/07/31/ado-net-data-services-cheat-sheet.aspx</link><pubDate>Sat, 01 Aug 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9854612</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9854612.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9854612</wfw:commentRss><description>&lt;P&gt;Just run into this today - very nifty cheat sheet for ADO.NET Data Services.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.sadev.co.za/files/Posters/ADO.NET%20Data%20Services%20Cheat%20Sheet.pdf"&gt;http://www.sadev.co.za/files/Posters/ADO.NET%20Data%20Services%20Cheat%20Sheet.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9854612" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/ADO.NET+Data+Services/default.aspx">ADO.NET Data Services</category></item><item><title>XSLT Timer Released on Code Gallery</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/16/xslt-timer-released-on-code-gallery.aspx</link><pubDate>Wed, 17 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9751338</guid><dc:creator>marcelolr</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9751338.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9751338</wfw:commentRss><description>&lt;P&gt;Over this past weekend, the &lt;A href="http://code.msdn.microsoft.com/xslttimer" mce_href="http://code.msdn.microsoft.com/xslttimer"&gt;XSLT Timer tool&lt;/A&gt; has been released on Code Gallery.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=xslttimer&amp;amp;DownloadId=6174"&gt;&lt;IMG style="WIDTH: 560px; HEIGHT: 336px" src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=xslttimer&amp;amp;DownloadId=6174" width=560 height=336 mce_src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=xslttimer&amp;amp;DownloadId=6174"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;This is a very simple tool, that will simply allow you to type / paste in a document and an XSLT stylesheet, and then tell you how long it takes on average to do the transform using the &lt;A href="http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx"&gt;XslCompiledTransform&lt;/A&gt; class. Very simple, but handy when trying ad hoc variations on ideas and such.&lt;/P&gt;
&lt;P&gt;You might want to look at the &lt;A href="http://blogs.msdn.com/marcelolr/pages/xslt-resources.aspx" mce_href="http://blogs.msdn.com/marcelolr/pages/xslt-resources.aspx"&gt;XML Resources page&lt;/A&gt; for links to other tools as well.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;update #1 - adding an actual link to the tool helps :)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9751338" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/XML/default.aspx">XML</category></item><item><title>History of Microsoft</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/15/history-of-microsoft.aspx</link><pubDate>Tue, 16 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9747547</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9747547.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9747547</wfw:commentRss><description>&lt;P&gt;There's a fascinating look at Microsoft's history, year-by-year, on &lt;A href="http://channel9.msdn.com/shows/History/" mce_href="http://channel9.msdn.com/shows/History/"&gt;Channel 9&lt;/A&gt;. I hadn't looked at these before, but they're relatively short so you can view them whenver you have a break and come back later.&lt;/P&gt;
&lt;P&gt;Looking forward to more of these.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9747547" width="1" height="1"&gt;</description></item><item><title>Performance Tools</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/12/performance-tools.aspx</link><pubDate>Sat, 13 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9729807</guid><dc:creator>marcelolr</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9729807.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9729807</wfw:commentRss><description>&lt;P&gt;I've written about performance tools in the past - it's a topic that interests me quite a bit, because I believe that perceived performance is a very fundamental part of the user experience and can wow you or frustrate you immensely. And I believe "real performance" (so to speak) is very important of course, especially when you don't have a person sitting in front of the computer, but I think every developer will appreciate the difference that a 2' checkin script has vs. a 20' checkin script or a 60' script. 'Nuff said.&lt;/P&gt;
&lt;P&gt;In any case, this post about &lt;A href="http://blogs.msdn.com/profiler/archive/2009/06/10/write-faster-code-with-vs-2010-profiler.aspx" mce_href="http://blogs.msdn.com/profiler/archive/2009/06/10/write-faster-code-with-vs-2010-profiler.aspx"&gt;Visual Studio 2010 profiler tools&lt;/A&gt; shows some fabulously productive stuff. And all with Visual Studio usability, rather than what it feels like to use some of the more arcane tools (that are admittedly very well suited to automated scenarios, we'll always grant them that).&lt;/P&gt;
&lt;P&gt;Anyway, read up and enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9729807" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Group slicing in XSLT with parameters</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/10/group-slicing-in-xslt-with-parameters.aspx</link><pubDate>Thu, 11 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9701921</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9701921.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9701921</wfw:commentRss><description>&lt;P&gt;One other twist on the &lt;A href="http://blogs.msdn.com/marcelolr/archive/2009/06/04/more-group-slicing-in-xslt.aspx" mce_href="http://blogs.msdn.com/marcelolr/archive/2009/06/04/more-group-slicing-in-xslt.aspx"&gt;last slicing stylesheet&lt;/A&gt;. Let's say that we didn't want to hard-code the number of items in a group, but instead we wanted to be able to control this separately. We can use an xsl:param on the stylesheet to control this externally and provide a default as well.&lt;/P&gt;
&lt;P&gt;Here is the touched up stylesheet, with the changes highlighted.&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:output method='xml' indent='yes'/&amp;gt;&lt;BR&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: yellow"&gt;&amp;lt;xsl:param name='itemcount'&amp;gt;2&amp;lt;/xsl:param&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!-- Just copy everything. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='@* | node()' mode='everything'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='@* | node()' mode='everything'/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!-- Copy everything but replace items with the replacement parameter. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='@* | node()' mode='withreplacement'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:param name='replacement' /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Copy everything except item elements. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='@* | node()[local-name() != "item"]' mode='withreplacement'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:with-param name='replacement' select='$replacement' /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:apply-templates&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- If this is where items are, apply the replacement node-set. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:if test='item'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='$replacement' mode='everything' /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!--&lt;BR&gt;&amp;nbsp;We matched the first of a slice of items.&lt;BR&gt;&amp;nbsp;Copy everything from the root, passing the current item&lt;BR&gt;&amp;nbsp;and its sibling(s) as the replacement.&lt;BR&gt;&amp;nbsp;--&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='item' mode='firstofslice'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:apply-templates select='/group' mode='withreplacement'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:with-param &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name='replacement' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="BACKGROUND: yellow"&gt;select='. | following-sibling::item[position() &amp;amp;lt; $itemcount]'&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xsl:apply-templates&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!-- Match to root, and put everything under a single element. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='/'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;root&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Grab every second item to create a new group. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="BACKGROUND: yellow"&gt;&amp;lt;xsl:apply-templates select='group/item[position() mod $itemcount = 1]'&lt;/SPAN&gt; mode='firstofslice' /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/root&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;By the way, if you haven't already, check out the comments on &lt;A href="http://blogs.msdn.com/marcelolr/archive/2009/06/02/simple-group-slicing-in-xslt.aspx" mce_href="http://blogs.msdn.com/marcelolr/archive/2009/06/02/simple-group-slicing-in-xslt.aspx"&gt;the first post&lt;/A&gt; for a more efficient variation of the stylesheet.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9701921" width="1" height="1"&gt;</description></item><item><title>StackPanel, DockPanel and scrolling items</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/09/stackpanel-dockpanel-and-scrolling-items.aspx</link><pubDate>Wed, 10 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9667567</guid><dc:creator>marcelolr</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9667567.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9667567</wfw:commentRss><description>&lt;P&gt;I spent a little bit of time with this the other day, and I thought I'd pass the learnings on, in hopes it helps someone.&lt;/P&gt;
&lt;P&gt;This is the layout what I was trying to accomplish with WPF. In a section of my window, I wanted a bit of text at the top, and then the rest filled with items. The items in this case were bits of XML with an item template that created a nice representation, but for this post we'll just use buttons, which have the same effect.&lt;/P&gt;
&lt;P&gt;My initial XAML looked like this. You can try pasting these into XAMLPad to follow along (and add more buttons or resize the window so all buttons won't fit in the view).&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;Grid xmlns="&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" mce_href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;lt;StackPanel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;ItemsControl&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;!-- ... --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/ItemsControl&amp;gt;&lt;BR&gt;&amp;lt;/StackPanel&amp;gt;&lt;BR&gt;&amp;lt;/Grid&amp;gt;&lt;/P&gt;
&lt;P&gt;This is all well and good, but some of the Buttons are just clipped from the window and you can't get to them. This is because the ItemsControl doesn't have the built-in ability to scroll its contents, so I decided to go ahead an add a wrapping ScrollViewer.&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;Grid xmlns="&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" mce_href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;lt;StackPanel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;ScrollViewer&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ItemsControl&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- ... --&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/ItemsControl&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/ScrollViewer&amp;gt;&lt;BR&gt;&amp;lt;/StackPanel&amp;gt;&lt;BR&gt;&amp;lt;/Grid&amp;gt;&lt;/P&gt;
&lt;P&gt;This produces a very confusing situation, in which the scroll viewer is present, but the scroll bar is disabled and goes off the window.&lt;/P&gt;
&lt;P&gt;After looking at this for a while, I realized that the problem is that the StackPanel doesn't constrain the size of its children. So if the scroll viewer wants to be huge so it doesn't have to, the StackPanel will arrange it so, even if it clips.&lt;/P&gt;
&lt;P&gt;The solution then was to switch to something that &lt;EM&gt;did&lt;/EM&gt; constrain its children. In particular, a DockPanel is great, as it will size the last child to occupy all remaining space.&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;Grid xmlns="&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation" mce_href="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&lt;/A&gt;"&amp;gt;&lt;BR&gt;&amp;lt;DockPanel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;ScrollViewer&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;ItemsControl&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;Button&amp;gt;Button&amp;lt;/Button&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;!-- ... --&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/ItemsControl&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/ScrollViewer&amp;gt;&lt;BR&gt;&amp;lt;/DockPanel&amp;gt;&lt;BR&gt;&amp;lt;/Grid&amp;gt;&lt;/P&gt;
&lt;P&gt;Now I have a scroll viewer with an enabled scroll bar, which allows me to get to all the buttons.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9667567" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/WPF/default.aspx">WPF</category></item><item><title>Aaron Dunnington on Velocity</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/08/aaron-dunnington-on-velocity.aspx</link><pubDate>Tue, 09 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9691917</guid><dc:creator>marcelolr</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9691917.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9691917</wfw:commentRss><description>&lt;P&gt;Aaron published an &lt;A href="http://msdn.microsoft.com/en-us/magazine/dd861287.aspx" mce_href="http://msdn.microsoft.com/en-us/magazine/dd861287.aspx"&gt;MSDN article on using Velocity&lt;/A&gt; that is very much worth checking out.&lt;/P&gt;
&lt;P&gt;Some of the highlights:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Why and&amp;nbsp;how to scale your applications.&lt;/LI&gt;
&lt;LI&gt;Deployment and configuration of Velocity.&lt;/LI&gt;
&lt;LI&gt;Data analysis and cache design.&lt;/LI&gt;
&lt;LI&gt;ASP.NET Session integration.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;One of the things I remember from DevConnections is how ridiculously popular it is to use this from ASP.NET, and how easy it is to improve the performance of your ASP.NET applications with the integrated support.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9691917" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/Velocity/default.aspx">Velocity</category></item><item><title>XmlLite says: error C2146: syntax error : missing ';' before identifier 'IXmlReader'</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/05/xmllite-says-error-c2146-syntax-error-missing-before-identifier-ixmlreader.aspx</link><pubDate>Sat, 06 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9688013</guid><dc:creator>marcelolr</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9688013.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9688013</wfw:commentRss><description>&lt;P&gt;This is something that I've been asked more than once, and so here goes an answer that might help if you run into this.&lt;/P&gt;
&lt;P&gt;Let's say that you create a new project and borrow code or do something of the sort, and suddenly start getting an error message such as this one&lt;/P&gt;
&lt;P&gt;xmllite.h(49) : error C2146: syntax error : missing ';' before identifier 'IXmlReader'&lt;/P&gt;
&lt;P&gt;This typically points to a missing macro. You can fix this by adding this to your include headers:&lt;/P&gt;
&lt;P&gt;#include "objbase.h"&lt;/P&gt;
&lt;P&gt;If you're using Visual C++-style projects, this may already be included via stdafx.h including the Windows headers for you.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9688013" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.msdn.com/marcelolr/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/marcelolr/archive/tags/Windows/default.aspx">Windows</category></item><item><title>More group slicing in XSLT</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/04/more-group-slicing-in-xslt.aspx</link><pubDate>Fri, 05 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9683550</guid><dc:creator>marcelolr</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9683550.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9683550</wfw:commentRss><description>&lt;P&gt;To continue on my &lt;A href="http://blogs.msdn.com/marcelolr/archive/2009/06/02/simple-group-slicing-in-xslt.aspx" mce_href="http://blogs.msdn.com/marcelolr/archive/2009/06/02/simple-group-slicing-in-xslt.aspx"&gt;previous example&lt;/A&gt; on slicing (I made the term up, by the way), today we'll do something a little different.&lt;/P&gt;
&lt;P&gt;Let's say that instead of just inserting the slice elements and a few items, we want to copy the whole tree &lt;EM&gt;n&lt;/EM&gt; times (where &lt;EM&gt;n&lt;/EM&gt; is the number of slices), each time with a different slice of items. That includes elements beyond the things we're currently slicing.&lt;/P&gt;
&lt;P&gt;So let's say we have this document, similar to the previous one.&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;group groupattribute='1'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;repeat-me&amp;gt;each time&amp;lt;/repeat-me&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;item item='1'&amp;gt;1 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt; &amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;item item='2'&amp;gt;2 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt; &amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;item item='3'&amp;gt;3 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt; &amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;item item='4'&amp;gt;4 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt; &amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;item item='5'&amp;gt;5 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt; &amp;lt;/item&amp;gt;&lt;BR&gt;&amp;lt;/group&amp;gt;&lt;/P&gt;
&lt;P&gt;And we want to get this effect.&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;root&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;group groupattribute="1"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;repeat-me&amp;gt;each time&amp;lt;/repeat-me&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item item="1"&amp;gt;1 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt;&amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item item="2"&amp;gt;2 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt;&amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;group groupattribute="1"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;repeat-me&amp;gt;each time&amp;lt;/repeat-me&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item item="3"&amp;gt;3 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt;&amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item item="4"&amp;gt;4 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt;&amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;group groupattribute="1"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;repeat-me&amp;gt;each time&amp;lt;/repeat-me&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item item="5"&amp;gt;5 &amp;lt;sub&amp;gt;text&amp;lt;/sub&amp;gt;&amp;lt;/item&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;BR&gt;&amp;lt;/root&amp;gt;&lt;/P&gt;
&lt;P&gt;Here is a stylesheet that can accomplish this, using parameters to pass around the replacements nodes for each copy of the tree. As always, variations in the comments are welcome.&lt;/P&gt;
&lt;P style="FONT-FAMILY: Consolas, Lucida Console, Courier New"&gt;&amp;lt;xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:output method='xml' indent='yes'/&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!-- Just copy everything. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='@* | node()' mode='everything'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='@* | node()' mode='everything'/&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!-- Copy everything but replace items with the replacement parameter. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='@* | node()' mode='withreplacement'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:param name='replacement' /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Copy everything except item elements. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='@* | node()[local-name() != "item"]' mode='withreplacement'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:with-param name='replacement' select='$replacement' /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:apply-templates&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- If this is where items are, apply the replacement node-set. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:if test='item'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='$replacement' mode='everything' /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/xsl:if&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xsl:copy&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!--&lt;BR&gt;&amp;nbsp;We matched the first of a slice of items.&lt;BR&gt;&amp;nbsp;Copy everything from the root, passing the current item&lt;BR&gt;&amp;nbsp;and its sibling(s) as the replacement.&lt;BR&gt;&amp;nbsp;--&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='item' mode='firstofslice'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xsl:apply-templates select='/group' mode='withreplacement'&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:with-param &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name='replacement' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select='. | following-sibling::item[1]'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xsl:apply-templates&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;lt;!-- Match to root, and put everything under a single element. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;xsl:template match='/'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;root&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Grab every second item to create a new group. --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;xsl:apply-templates select='group/item[position() mod 2 = 1]' mode='firstofslice' /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/root&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/xsl:template&amp;gt;&lt;BR&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9683550" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/XML/default.aspx">XML</category></item><item><title>LINQ to XSD on CodePlex</title><link>http://blogs.msdn.com/marcelolr/archive/2009/06/03/linq-to-xsd-on-codeplex.aspx</link><pubDate>Thu, 04 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9692013</guid><dc:creator>marcelolr</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/marcelolr/comments/9692013.aspx</comments><wfw:commentRss>http://blogs.msdn.com/marcelolr/commentrss.aspx?PostID=9692013</wfw:commentRss><description>&lt;P&gt;I'm very, very pleased about today's &lt;A href="http://linqtoxsd.codeplex.com/" mce_href="http://linqtoxsd.codeplex.com/"&gt;announcement&lt;/A&gt; on LINQ to XSD being available on &lt;A href="http://linqtoxsd.codeplex.com/" mce_href="http://linqtoxsd.codeplex.com/"&gt;CodePlex&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The functionality available should be esentially the same as what was released in the last Alpha Preview, so if you were already using this, it should be a smooth transition.&lt;/P&gt;
&lt;P&gt;The community of developers interested in LINQ to XSD will now be able to include this in their applications, as it's being released under the &lt;A href="http://linqtoxsd.codeplex.com/license" mce_href="http://linqtoxsd.codeplex.com/license"&gt;Ms-PL license&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9692013" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/marcelolr/archive/tags/XML/default.aspx">XML</category></item></channel></rss>