<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>RichardSoeteman.net - C#</title>
    <link>http://www.richardsoeteman.net/</link>
    <description />
    <language>en-us</language>
    <copyright>Richard Soeteman</copyright>
    <lastBuildDate>Sun, 13 Aug 2006 13:15:38 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>richard@richardsoeteman.net</managingEditor>
    <webMaster>richard@richardsoeteman.net</webMaster>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=6db2adbd-e4af-403f-92bb-2f03d4ed9a2b</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,6db2adbd-e4af-403f-92bb-2f03d4ed9a2b.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,6db2adbd-e4af-403f-92bb-2f03d4ed9a2b.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=6db2adbd-e4af-403f-92bb-2f03d4ed9a2b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Afgelopen week wilde ik het standaard Xml Control wilde gebruiken, echter was het
niet mogelijk XSLT direct als String door te geven, wat voor mijn toepassing wel nodig
was. Voor de rest doet het Xml Control exact wat ik wil, dus uitbreiden maar. 
</p>
        <p>
Allereerst maken we een nieuwe klasse aan welke erft van System.Web.UI.WebControls.Xml.  
<br /><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> XmlExtender
: System.Web.UI.WebControls.Xml</span></p>
        <p>
Op dit punt kunnen we exact hetzelfde dat het <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Xml
Control</span> kan. Vervolgens maken we een extra property TransformContent. 
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span>
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> TransformContent<br />
{<br />
  set<br />
  {<br />
    XslTransform xslTrans <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> XslTransform();<br />
    xslTrans.Load(XmlReader.Create(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> StringReader(value)));<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"> 
  this</span>.Transform <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xslTrans;<br />
  }<br />
}</span>
        </p>
        <p>
De naam is zorgvuldig gekozen, er bestaat reeds een property DocumentContent welke
xml als string verwacht. TransformContent creeert een xslTransformer en leest de string
in. Vervolgens geef ik de de xslTransformer aan Property Transform van het Xml control
en heb ik exact de functionaliteit die ik wil hebben. Simpel maar doeltreffend. 
</p>
        <p>
Nu kunnen we het control gebruiken in een webapplicatie. Voor het testen van het control
heb ik een  demo site ontwikkeld wat een kleine lijst met boeken toont.  
</p>
        <p>
In default.aspx registreren we ons control<br /><br /><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">&lt;%@
Register Assembly=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"XmlControlExtender"</span> Namespace=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"ControlExtenders"</span> TagPrefix=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"ext"</span> %&gt;<br /></span></p>
        <p>
Vervolgens plaatsen we het control op de pagina.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">&lt;ext:XmlExtender
ID=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"xmlDemo"</span> runat=<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"server"</span> /&gt;</span>
        </p>
        <p>
In ons codebehind geven we de documentContent en de Transformcontent mee.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">xmlDemo.DocumentContent <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> GetXml();<br />
xmlDemo.TransformContent <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> GetXslt();<br /></span>
        </p>
        <p>
GetXml geeft het xml document als string terug.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span>
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> GetXml()<br />
{<br />
     StringBuilder s <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> StringBuilder();<br />
     s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;?xml
version=\"1.0\" encoding=\"utf-8\" ?&gt;"</span>);<br />
     s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;books&gt;"</span>);<br />
     s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;book&gt;&lt;title&gt;Programming
.Net Components&lt;/title&gt;&lt;author&gt;Juval L&amp;#246;wy&lt;/author&gt;&lt;/book&gt;"</span>);<br />
     s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;book&gt;&lt;title&gt;.Net
2.0 Generics&lt;/title&gt;&lt;author&gt;Tod Golding&lt;/author&gt;&lt;/book&gt;"</span>);<br />
     s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;book&gt;&lt;title&gt;Head
First Design Patterns&lt;/title&gt;&lt;author&gt;Freeman &amp;amp; Freeman&lt;/author&gt;&lt;/book&gt;"</span>);<br />
     s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;/books&gt;"</span>);<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">    
return</span> s.ToString();<br />
}<br /></span>
        </p>
        <p>
GetXslt geeft de xslt als string terug.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span>
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> GetXslt()<br />
{<br />
   StringBuilder s <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> StringBuilder();<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;?xml
version=\"1.0\" encoding=\"utf-8\"?&gt;&lt;xsl:stylesheet version=\"1.0\"  xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;xsl:template
match=\"/books\"&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;html&gt;&lt;body&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;xsl:for-each
select=\"book\"&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Titel:
&lt;xsl:value-of select=\"title\"/&gt;&lt;br/&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Auteur:
&lt;xsl:value-of select=\"author\"/&gt;&lt;br/&gt;&lt;br/&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;/xsl:for-each&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;/body&gt;&lt;/html&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;/xsl:template&gt;"</span>);<br />
   s.Append(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;/xsl:stylesheet&gt;
"</span>);<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">  
return</span> s.ToString();<br />
}</span>
        </p>
        <p>
Na het starten van de webapplicatie wordt het XML document netjes opgemaakt door de
opgegeven stylesheet.
</p>
        <p align="center">
          <img src="http://www.richardsoeteman.net/content/binary/xmlcontrolextenderdemo.JPG" border="0" />
        </p>
        <p>
Met deze blogpost hoop ik aangetoond te hebben dat standaard Webcontrols zich makkelijk
laten uitbreiden en moedig een ieder zeker aan dit ook eens te doen. <br /><br />
XmlControlExtender is vrij te gebruiken in je eigen applicatie. Download <a href="http://www.richardsoeteman.net/downloads/webcontrols/xmlcontrolextender/xmlcontrolextender-source.zip" target="_new">de
Sourcecode </a>inclusief demo of alleen <a href="http://www.richardsoeteman.net/downloads/webcontrols/xmlcontrolextender/xmlcontrolextender.zip" target="_new">het
control</a>.
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=6db2adbd-e4af-403f-92bb-2f03d4ed9a2b" />
      </body>
      <title>XmlControlExtender</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,6db2adbd-e4af-403f-92bb-2f03d4ed9a2b.aspx</guid>
      <link>http://www.richardsoeteman.net/2006/08/13/XmlControlExtender.aspx</link>
      <pubDate>Sun, 13 Aug 2006 13:15:38 GMT</pubDate>
      <description>&lt;p&gt;
Afgelopen week wilde ik het standaard Xml Control wilde gebruiken, echter was het
niet mogelijk XSLT direct als String door te geven, wat voor mijn toepassing wel nodig
was. Voor de rest doet het Xml Control exact wat ik wil, dus uitbreiden maar. 
&lt;/p&gt;
&lt;p&gt;
Allereerst maken we een nieuwe klasse aan welke erft van System.Web.UI.WebControls.Xml.&amp;nbsp; 
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; XmlExtender
: System.Web.UI.WebControls.Xml&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Op dit punt kunnen we exact hetzelfde dat het &lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Xml
Control&lt;/span&gt; kan. Vervolgens maken we een extra property TransformContent. 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; TransformContent&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&amp;nbsp; &amp;nbsp; XslTransform xslTrans &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; XslTransform();&lt;br&gt;
&amp;nbsp; &amp;nbsp; xslTrans.Load(XmlReader.Create(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StringReader(value)));&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
&amp;nbsp; this&lt;/span&gt;.Transform &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xslTrans;&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
De naam is zorgvuldig gekozen, er bestaat reeds een property DocumentContent welke
xml als string verwacht. TransformContent creeert een xslTransformer en leest de string
in. Vervolgens geef ik de de xslTransformer aan Property Transform van het Xml control
en heb ik exact de functionaliteit die ik wil hebben. Simpel maar doeltreffend. 
&lt;/p&gt;
&lt;p&gt;
Nu kunnen we het control gebruiken in een webapplicatie. Voor het testen van het control
heb ik een&amp;nbsp; demo site ontwikkeld wat een kleine lijst met boeken toont.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
In default.aspx registreren we ons control&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;lt;%@
Register Assembly=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"XmlControlExtender"&lt;/span&gt; Namespace=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"ControlExtenders"&lt;/span&gt; TagPrefix=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"ext"&lt;/span&gt; %&amp;gt;&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Vervolgens plaatsen we het control op de pagina.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;lt;ext:XmlExtender
ID=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"xmlDemo"&lt;/span&gt; runat=&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"server"&lt;/span&gt; /&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
In ons codebehind geven we de documentContent en de Transformcontent mee.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;xmlDemo.DocumentContent &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; GetXml();&lt;br&gt;
xmlDemo.TransformContent &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; GetXslt();&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
GetXml geeft het xml document als string terug.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; GetXml()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder s &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StringBuilder();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;?xml
version=\"1.0\" encoding=\"utf-8\" ?&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;books&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;book&amp;gt;&amp;lt;title&amp;gt;Programming
.Net Components&amp;lt;/title&amp;gt;&amp;lt;author&amp;gt;Juval L&amp;amp;#246;wy&amp;lt;/author&amp;gt;&amp;lt;/book&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;book&amp;gt;&amp;lt;title&amp;gt;.Net
2.0 Generics&amp;lt;/title&amp;gt;&amp;lt;author&amp;gt;Tod Golding&amp;lt;/author&amp;gt;&amp;lt;/book&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;book&amp;gt;&amp;lt;title&amp;gt;Head
First Design Patterns&amp;lt;/title&amp;gt;&amp;lt;author&amp;gt;Freeman &amp;amp;amp; Freeman&amp;lt;/author&amp;gt;&amp;lt;/book&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;/books&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
return&lt;/span&gt; s.ToString();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
GetXslt geeft de xslt als string terug.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; GetXslt()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp; StringBuilder s &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; StringBuilder();&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;?xml
version=\"1.0\" encoding=\"utf-8\"?&amp;gt;&amp;lt;xsl:stylesheet version=\"1.0\"&amp;nbsp; xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;xsl:template
match=\"/books\"&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;xsl:for-each
select=\"book\"&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Titel:
&amp;lt;xsl:value-of select=\"title\"/&amp;gt;&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Auteur:
&amp;lt;xsl:value-of select=\"author\"/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;/xsl:for-each&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;/xsl:template&amp;gt;"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp; s.Append(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;/xsl:stylesheet&amp;gt;
"&lt;/span&gt;);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;
return&lt;/span&gt; s.ToString();&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Na het starten van de webapplicatie wordt het XML document netjes opgemaakt door de
opgegeven stylesheet.
&lt;/p&gt;
&lt;p align=center&gt;
&lt;img src="http://www.richardsoeteman.net/content/binary/xmlcontrolextenderdemo.JPG" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Met deze blogpost hoop ik aangetoond te hebben dat standaard Webcontrols zich makkelijk
laten uitbreiden en moedig een ieder zeker aan dit ook eens te doen.&amp;nbsp;&lt;br&gt;
&lt;br&gt;
XmlControlExtender is vrij te gebruiken in je eigen applicatie. Download&amp;nbsp;&lt;a href="http://www.richardsoeteman.net/downloads/webcontrols/xmlcontrolextender/xmlcontrolextender-source.zip" target=_new&gt;de
Sourcecode &lt;/a&gt;inclusief demo of alleen &lt;a href="http://www.richardsoeteman.net/downloads/webcontrols/xmlcontrolextender/xmlcontrolextender.zip" target=_new&gt;het
control&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=6db2adbd-e4af-403f-92bb-2f03d4ed9a2b" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,6db2adbd-e4af-403f-92bb-2f03d4ed9a2b.aspx</comments>
      <category>ASP.NET</category>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=77e3529c-416d-45a3-b558-1d54cc1b590d</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,77e3529c-416d-45a3-b558-1d54cc1b590d.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,77e3529c-416d-45a3-b558-1d54cc1b590d.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=77e3529c-416d-45a3-b558-1d54cc1b590d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
LINQ is een extensie op C# 2.0. LINQ stelt ons in staat Stong Typed Queries op in
memory collecties, Relationele data, of XML bestanden uit te voeren. Ook al wordt
deze technologie pas in C# 3.0 geïntegreerd is het zeker de moeite waard om eens mee
te experimenteren. Onderstaand een lijst met meer links naar informatie:
</p>
        <ul>
          <li>
            <a href="http://msdn.microsoft.com/netframework/future/linq/" target="_new">MSDN</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/netherlands/msdn/artikelen/linq.aspx" target="_new">Artikel
over LINQ van MSDN Nederland</a>
          </li>
          <li>
            <a href="http://blogger.xs4all.nl/detrio00/archive/2005/11/10/66350.aspx" target="_new">Blog
van Dennis Vroegop</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=77e3529c-416d-45a3-b558-1d54cc1b590d" />
      </body>
      <title>Language Integrated Query (LINQ)</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,77e3529c-416d-45a3-b558-1d54cc1b590d.aspx</guid>
      <link>http://www.richardsoeteman.net/2005/12/08/LanguageIntegratedQueryLINQ.aspx</link>
      <pubDate>Thu, 08 Dec 2005 16:54:54 GMT</pubDate>
      <description>&lt;p&gt;
LINQ is een extensie op C# 2.0. LINQ stelt ons in staat Stong Typed Queries op in
memory collecties, Relationele data, of XML bestanden uit te voeren. Ook al wordt
deze technologie pas in C# 3.0 geïntegreerd is het zeker de moeite waard om eens mee
te experimenteren. Onderstaand een lijst met meer links naar informatie:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/netframework/future/linq/" target=_new&gt;MSDN&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/netherlands/msdn/artikelen/linq.aspx" target=_new&gt;Artikel
over LINQ van MSDN Nederland&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blogger.xs4all.nl/detrio00/archive/2005/11/10/66350.aspx" target=_new&gt;Blog
van Dennis Vroegop&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=77e3529c-416d-45a3-b558-1d54cc1b590d" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,77e3529c-416d-45a3-b558-1d54cc1b590d.aspx</comments>
      <category>C#</category>
    </item>
    <item>
      <trackback:ping>http://www.richardsoeteman.net/Trackback.aspx?guid=d294a764-70b3-46eb-ad95-ceb56b0ae1af</trackback:ping>
      <pingback:server>http://www.richardsoeteman.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.richardsoeteman.net/PermaLink,guid,d294a764-70b3-46eb-ad95-ceb56b0ae1af.aspx</pingback:target>
      <dc:creator>Richard Soeteman</dc:creator>
      <wfw:comment>http://www.richardsoeteman.net/CommentView,guid,d294a764-70b3-46eb-ad95-ceb56b0ae1af.aspx</wfw:comment>
      <wfw:commentRss>http://www.richardsoeteman.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d294a764-70b3-46eb-ad95-ceb56b0ae1af</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Het C# team heeft een lijst met handige tools op MSDN geplaatst. Meer info vind je <a href="http://msdn.microsoft.com/vcsharp/programming/tools/" target="_new">hier</a>.
</p>
        <img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=d294a764-70b3-46eb-ad95-ceb56b0ae1af" />
      </body>
      <title>C# Programming Tools</title>
      <guid isPermaLink="false">http://www.richardsoeteman.net/PermaLink,guid,d294a764-70b3-46eb-ad95-ceb56b0ae1af.aspx</guid>
      <link>http://www.richardsoeteman.net/2005/12/05/CProgrammingTools.aspx</link>
      <pubDate>Mon, 05 Dec 2005 10:53:10 GMT</pubDate>
      <description>&lt;p&gt;
Het C# team heeft een lijst met handige tools op MSDN geplaatst. Meer info vind je &lt;a href="http://msdn.microsoft.com/vcsharp/programming/tools/" target=_new&gt;hier&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.richardsoeteman.net/aggbug.ashx?id=d294a764-70b3-46eb-ad95-ceb56b0ae1af" /&gt;</description>
      <comments>http://www.richardsoeteman.net/CommentView,guid,d294a764-70b3-46eb-ad95-ceb56b0ae1af.aspx</comments>
      <category>C#</category>
    </item>
  </channel>
</rss>