<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>António Ribeiro's WebLog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/aribeiro/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/aribeiro/feed.xml</link>
    <description>Developer Consultant, Microsoft.</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:40:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Creating HTML markup using HTML Controls object model</title>
      <link>https://docs.microsoft.com/archive/blogs/aribeiro/creating-html-markup-using-html-controls-object-model</link>
      <pubDate>Wed, 19 Jan 2005 08:00:00 GMT</pubDate>
      <dc:creator><![CDATA[aribeiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aribeiro/2005/01/19/creating-html-markup-using-html-controls-object-model/</guid>
      <description><![CDATA[Although ASP.NET provides a great object model for handling Web Controls and HTML Controls, I often...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Arial size=2>Although ASP.NET provides a great object model for handling Web Controls and HTML Controls, I often see code that creates HTML markup directly, by manipulating strings. </FONT><FONT face=Arial size=2>An example:</FONT></P><FONT face="Courier New" size=2>
<P><FONT face="Courier New" size=2>&nbsp;&nbsp;private string GetSomeHtml()<BR>&nbsp;&nbsp;{<BR></FONT><FONT size=2><FONT face="Courier New">&nbsp;&nbsp;&nbsp; string html = "&lt;A HREF=\"<FONT color=#000000>https://blogs.msdn.com/aribeiro\</FONT>"&gt;" + Server.HtmlEncode("Antonio Ribeiro's Web Log") + "&lt;/A&gt;";<BR><BR>&nbsp;&nbsp;&nbsp; return html;<BR>&nbsp;&nbsp;}</FONT></P></FONT></FONT>
<P><FONT face=Arial size=2>Despite being performant, this isn't easy to read or to maintain.</FONT></P>
<P><FONT face=Arial size=2>You should allways take advantage of templated HTML and Web Controls in Visual Studio.NET. If you need&nbsp;programmatically manipulate and HTML&nbsp;element, drag an HTML Control into your Web Form, right click it&nbsp;and select <STRONG>Run As Server Control</STRONG>. Your HTML control is now a server side component that can be manipulated using ASP.NET code.</FONT></P>
<P><FONT face=Arial size=2>Still, if you need to create HTML markup strings in your code and you don't want to do it using templated controls, you can always use the HTML Object Model. Here's an example.</FONT></P>
<P><FONT size=2><FONT face="Courier New">&nbsp;&nbsp;private string GetSomeHtml()<BR>&nbsp;&nbsp;{<BR></FONT><FONT face="Courier New" size=2>&nbsp;&nbsp;&nbsp;&nbsp;HtmlAnchor a = new HtmlAnchor();<BR>&nbsp; &nbsp;&nbsp;a.HRef = "https://blogs.msdn.com/aribeiro";<BR>&nbsp;&nbsp; &nbsp;a.InnerText = "Antonio Ribeiro's Web Log";<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp; &nbsp;HtmlTextWriter htw = new HtmlTextWriter(new StringWriter());<BR>&nbsp;&nbsp;&nbsp; a.RenderControl(htw);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return htw.InnerWriter.ToString();&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}</FONT></FONT></P>
<P><FONT face=Arial size=2>Another example, using the Render event:</FONT></P>
<P><FONT face="Courier New" size=2>&nbsp;&nbsp;protected override void Render(System.Web.UI.HtmlTextWriter writer)<BR>&nbsp;&nbsp;{<BR></FONT><FONT size=2><FONT face="Courier New">&nbsp;&nbsp;&nbsp;&nbsp;HtmlAnchor a = new HtmlAnchor();<BR>&nbsp; &nbsp;&nbsp;a.HRef = "https://blogs.msdn.com/aribeiro";<BR>&nbsp;&nbsp; &nbsp;a.InnerText = "Antonio Ribeiro's Web Log";<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; a.RenderControl(writer);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;}</FONT></FONT></P>
<P><FONT size=2>&nbsp;</P></FONT>]]></content:encoded>
    </item>
    <item>
      <title>Rendering n-column tables using the Repeater control</title>
      <link>https://docs.microsoft.com/archive/blogs/aribeiro/rendering-n-column-tables-using-the-repeater-control</link>
      <pubDate>Wed, 12 Jan 2005 15:55:00 GMT</pubDate>
      <dc:creator><![CDATA[aribeiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aribeiro/2005/01/12/rendering-n-column-tables-using-the-repeater-control/</guid>
      <description><![CDATA[The ASP.NET Repeater control provides a template-based mechanism for rendering data using Data...]]></description>
      <content:encoded><![CDATA[<p><font face="Arial" size="2">The ASP.NET <strong>Repeater </strong>control provides a template-based mechanism for rendering data using Data Binding. A basic usage sample can be found <font face="Arial" size="2"><a href="https://samples.gotdotnet.com/quickstart/aspplus/doc/webdatalist.aspx">here</a> </font>. </font></p> <p><font face="Arial" size="2">The control uses the &lt;ItemTemplate&gt; tag&nbsp;for declaring HTML that should be rendered for each data item and a &lt;SeparatorTemplate&gt; tag to put some HTML between items. It also supports an &lt;AlternatingItemTemplate&gt; that can useful to render a fancy mixed two-color list or, more seriously, a two-column table. An example:</font></p> <p><b><font face="Arial" size="2">Page1.aspx</font></b></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp; &lt;table border="1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Repeater id="Repeater1" runat="server"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%# DataBinder.Eval(Container.DataItem, "ProductName") %&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;AlternatingItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%# DataBinder.Eval(Container.DataItem, "ProductName") %&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/AlternatingItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:Repeater&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/table&gt;</font></p> <p><b><font face="Arial" size="2">Page1.cs</font></b></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected System.Web.UI.WebControls.Repeater Repeater1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void Page_Load(object sender, System.EventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlCommand command = new SqlCommand("SELECT TOP 15 ProductId, ProductName FROM Products", connection); </font></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection.Open(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Repeater1.DataSource = command.ExecuteReader(CommandBehavior.CloseConnection);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Repeater1.DataBind();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p> <p class="text"><b><font face="Arial" size="2">Resulting HTML</font></b></p> <table id="table2" border="1"> <tbody> <tr> <td> <p class="text"><font face="Arial" size="2">Alice Mutton </font></p></td> <td> <p class="text"><font face="Arial" size="2">Aniseed Syrup </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Boston Crab Meat </font></p></td> <td> <p class="text"><font face="Arial" size="2">Camembert Pierrot </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Carnarvon Tigers </font></p></td> <td> <p class="text"><font face="Arial" size="2">Chai </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Chang </font></p></td> <td> <p class="text"><font face="Arial" size="2">Chartreuse verte </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Chef Anton's Cajun Seasoning </font></p></td> <td> <p class="text"><font face="Arial" size="2">Chef Anton's Gumbo Mix </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Chocolade </font></p></td> <td> <p class="text"><font face="Arial" size="2">Côte de Blaye </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Escargots de Bourgogne </font></p></td> <td> <p class="text"><font face="Arial" size="2">Filo Mix </font></p></td></tr> <tr> <td> <p class="text"><font face="Arial" size="2">Flotemysost </font></p></td></tr></tbody></table> <p class="text"><font face="Arial" size="2">But what if need to render, lets say, a 3-column table? </font></p> <table id="table3" border="1"> <tbody> <tr> <td><font face="Arial" size="2">Alice Mutton</font></td> <td><font face="Arial" size="2">Aniseed Syrup</font></td> <td><font face="Arial" size="2">Boston Crab Meat</font></td></tr> <tr> <td><font face="Arial" size="2">Camembert Pierrot</font></td> <td><font face="Arial" size="2">Carnarvon Tigers</font></td> <td><font face="Arial" size="2">Chai</font></td></tr> <tr> <td><font face="Arial" size="2">Chang</font></td> <td><font face="Arial" size="2">Chartreuse verte</font></td> <td><font face="Arial" size="2">Chef Anton's Cajun Seasoning</font></td></tr> <tr> <td><font face="Arial" size="2">Chef Anton's Gumbo Mix</font></td> <td><font face="Arial" size="2">Chocolade</font></td> <td><font face="Arial" size="2">Côte de Blaye</font></td></tr> <tr> <td><font face="Arial" size="2">Escargots de Bourgogne</font></td> <td><font face="Arial" size="2">Filo Mix</font></td> <td><font face="Arial" size="2">Flotemysost</font></td></tr></tbody></table> <p class="text"><font face="Arial" size="2">And generically, a n-column table?</font></p> <p class="text"><font face="Arial" size="2">There's no &lt;n-AlternatingItemTemplate&gt; tag for this purpose. Yes, you could just programatically render the required HTML, loosing the design-time support. But you can also achieve this using a <b>template-based </b>approach maintaining design time support, using <b>Data Binding events</b>. Here's how.</font></p> <p class="text"><font face="Arial" size="2"></font>&nbsp;</p> <p class="text"><font face="Arial">A 3-column table using a template-based Repeater</font></p> <p class="text"><font face="Arial" size="2">To produce a 3-column table, all you need is render a &lt;TD&gt;...&lt;/TD&gt; for each data item, and render a &lt;/TR&gt;&lt;TR&gt; every 3 items. Besides, you should place a &lt;TR&gt; befere the first item and a &lt;/TR&gt; after the last item.</font></p> <p class="text"><font face="Arial" size="2">The difficult part on this is the <i>"render a &lt;/TR&gt;&lt;TR&gt; every 3 items" </i>thing. How can this be achieved using Data Binding? The answer is the ItemDataBound event.</font></p> <p class="text"><font face="Arial" size="2">When you invoke DataBind() method on a Data Binding enabled control, you can subscribe an event that is fired when each item is rendered. With some coding on this event, you can programmatically change the presentation of a specific data item. With this in mind, you can just count the items being rendered, and show or hide a separator &lt;/TR&gt;&lt;TR&gt; every three items.</font></p> <p class="text"><font face="Arial" size="2">A full example:</font></p> <p><font face="Arial" size="2"></font> <p><font face="Arial" size="2"></font></p> <p><b><font face="Arial" size="2">Page1.aspx</font></b></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table border="1"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Repeater id="Repeater1" runat="server"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;%# DataBinder.Eval(Container.DataItem, "ProductName") %&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ItemTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SeparatorTemplate&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/SeparatorTemplate&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:Repeater&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br /></font><br /><b><font face="Arial" size="2">Page1.cs</font></b></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected System.Web.UI.WebControls.Repeater Repeater1;<br /></font><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected int counter = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected int columnCount = 3;</font><font face="Courier New"><br /><br /><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void Page_Load(object sender, System.EventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlCommand command = new SqlCommand("SELECT TOP 15 ProductId, ProductName FROM Products", connection); </font></font></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connection.Open();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Repeater1.DataSource = command.ExecuteReader(CommandBehavior.CloseConnection);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Repeater1.ItemDataBound +=new RepeaterItemEventHandler(Repeater1_ItemDataBound);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Repeater1.DataBind();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p> <p class="cs"><font face="Courier New" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (e.Item.ItemType == ListItemType.Separator)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((++counter % columnCount) != 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.Item.Visible = false;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p> <p class="text"><font face="Arial" size="2">Cool? </font><font face="Arial" size="2">To get the full source code for this sample e-mail the author </font><a href="mailto:aribeiro@microsoft.com"><font face="Arial" size="2">aribeiro@microsoft.com</font></a></p> <p class="text"><font face="Arial" size="2"></font>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>New articles available !</title>
      <link>https://docs.microsoft.com/archive/blogs/aribeiro/new-articles-available</link>
      <pubDate>Tue, 11 Jan 2005 19:05:00 GMT</pubDate>
      <dc:creator><![CDATA[aribeiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aribeiro/2005/01/11/new-articles-available/</guid>
      <description><![CDATA[Check&nbsp;Creating a Custom Placeholder to render and edit XML data using XSL templates&nbsp;(CMS)...]]></description>
      <content:encoded><![CDATA[<p><font face="Arial" size="2">Check&nbsp;<font color="#006666"><a href="https://blogs.msdn.com/aribeiro/articles/350773.aspx">Creating a Custom Placeholder to render and edit XML data using XSL templates</a></font></font><font face="Arial" size="2">&nbsp;(CMS) and </font><font face="Arial" size="2"><a href="https://blogs.msdn.com/aribeiro/articles/351439.aspx">Rendering n-column tables using the Repeater control</a>&nbsp;(ASP.NET)</font></p> <p><font face="Arial" size="2"></font>&nbsp;</p> <p><font face="Arial" size="2"><a href="https://blogs.msdn.com/aribeiro/articles/351439.aspx"></a></font>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Creating a Custom Placeholder to render and edit XML data using XSL templates</title>
      <link>https://docs.microsoft.com/archive/blogs/aribeiro/creating-a-custom-placeholder-to-render-and-edit-xml-data-using-xsl-templates</link>
      <pubDate>Tue, 11 Jan 2005 18:48:00 GMT</pubDate>
      <dc:creator><![CDATA[aribeiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/aribeiro/2005/01/11/creating-a-custom-placeholder-to-render-and-edit-xml-data-using-xsl-templates/</guid>
      <description><![CDATA[XMLPlaceholder Controls are a useful technique to handle structured data within a CMS Posting....]]></description>
      <content:encoded><![CDATA[<div class="Section1"> <p class="MsoNormal"><font size="2"><font face="Arial"><span class="SpellE">XMLPlaceholder</span> Controls are a useful technique to handle structured data within a CMS Posting. </font></font></p> <p class="MsoNormal"><font face="Arial" size="2">Suppose you have a <b style="mso-bidi-font-weight: normal">Book</b> template containing an <b style="mso-bidi-font-weight: normal">Authors</b> placeholder. When a book has more than one author, you could store a comma-separated list of authors in <span class="GramE">a</span> <span class="SpellE">HtmlPlaceholder</span>. The authoring interface would look like:</font></p> <p class="MsoNormal"><font face="Arial" size="2">Authors List:<br /></font><input style="WIDTH: 236px; HEIGHT: 23px" size="28" value="António Ribeiro, Cristina Carvalho" name="AuthorsPlaceholder"></p> <p class="MsoNormal"><font face="Arial" size="2">But ideally, the list could be expressed as an XML document stored in a Custom XML Placeholder. This would allow storing additional structured data, such as the Nationality of each author. Something like:</font></p> <p class="MsoNormal"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">AuthorList</span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">id</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="<span class="SpellE">AuthorsPlaceholder</span>"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Author</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">id</span><span style="COLOR: blue">="Author.1"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Name</span><span style="COLOR: blue">&gt;</span>António Ribeiro<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Name</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Nationality</span><span style="COLOR: blue">&gt;</span>Portuguese<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Nationality</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Author</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Author</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">id</span><span style="COLOR: blue">="Author.2"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Name</span><span style="COLOR: blue">&gt;</span>Cristina <span class="SpellE">Carvalho</span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Name</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Nationality</span><span style="COLOR: blue">&gt;</span>Spanish<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Nationality</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Author</span><span style="COLOR: blue">&gt;<o:p></o:p></span> <br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">AuthorList</span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<o:p></o:p></span></p> <p class="MsoNormal"><font face="Arial" size="2">The issue around this approach is the development effort required to implement an Authoring interface (a backoffice) to manage the authors XML document. Although a <span class="SpellE">DataGrid</span> could be used, some specific coding would be necessary. Also, an HTML form is a more appropriate choice.</font></p> <p class="MsoNormal"><font face="Arial"><font size="2"><o:p>&nbsp;</o:p> <hr align="center" width="100%" size="3" /> </font></font> <p></p> <p class="MsoNormal"><b style="mso-bidi-font-weight: normal"><font face="Arial" size="2">Proposed Solution</font></b></p> <p class="MsoNormal"><font face="Arial" size="2">Creating a Custom XML Placeholder that renders HTML for Authoring and Presentation using different XSL templates can be a cost-effective solution. </font></p> <p class="MsoNormal"><font face="Arial" size="2">The Custom Control implementation can be generic enough to render any list of Items using the same XML schema, just using different XSL tempates for Authoring and Presentation interfaces. The Presentation template should render an appropriate presentation HTML while the authoring interface should display Text Boxes for editing content cells, allowing updates and deletes of existing rows or additions of new rows (one row at a time).</font></p> <p class="MsoNormal"><font face="Arial" size="2">This solution would leverage the declarative support for XML / XSL transformations and would require no other coding changes when used with other type of information. A full example is shown bellow</font></p> <p class="MsoNormal"><font face="Arial" size="2">The XML document stored in the XML Placeholder:</font></p> <p class="MsoNormal" style="mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">ItemList</span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">id</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="<span class="SpellE">ItemsPlaceholder</span>"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Item</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">id</span><span style="COLOR: blue">="Item.1"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">&lt;</span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">Item </span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT"></span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">id</span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">="Name"&gt;</span><span lang="PT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">António Ribeiro<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Item</span><span style="COLOR: blue">&gt;<br /></span></span><span lang="PT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Item </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">id</span><span style="COLOR: blue">="Nationality"&gt;</span>Portuguese<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Item</span><span style="COLOR: blue">&gt;<br /></span></span><span lang="PT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Item</span><span style="COLOR: blue">&gt;<br /></span></span><span lang="PT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Item</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">id</span><span style="COLOR: blue">="Item.2"&gt;<br /></span></span><span lang="PT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">Item </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">id</span><span style="COLOR: blue">="Name"&gt;</span>Cristina Carvalho<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Item</span><span style="COLOR: blue">&gt;<br /></span></span><span lang="PT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">Item </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">id</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="Nationality"&gt;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Spanish<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">Item</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">&lt;/</span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">Item</span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">&gt;<br /></span><span lang="PT" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: PT">&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">ItemList</span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<o:p></o:p></span></p> <p class="MsoNormal"><font face="Arial" size="2">The XSL Transformations for Presentation and Authoring:</font></p> <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext" cellspacing="0" cellpadding="0" border="1"> <tbody> <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"> <td valign="top" width="369"> <p class="MsoNormal"><font face="Arial" size="2">Rendered for <strong>Presentation </strong><br />(applying <span class="SpellE">Presentation.xsl</span>)&nbsp;&nbsp;&nbsp;</font></p></td> <td valign="top" width="369"> <p class="MsoNormal"><font face="Arial"><font size="2">Rendered for <strong>Authoring</strong> <br />(applying <span class="SpellE">Authoring.xsl</span>)&nbsp;<o:p>&nbsp;</o:p></font></font></p></td></tr> <tr style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"> <td valign="top" width="369"> <p class="MsoNormal"><o:p>&nbsp;</o:p></p> <p class="MsoNormal"><font face="Arial" size="2">Authors List <hr align="center" width="100%" size="3" /> </font><font face="Arial"><font size="2"><b>António Ribeiro<br /></b>Portuguese<o:p></o:p></font></font> <p></p> <p class="MsoNormal"><b><font face="Arial" size="2">Cristina </font><span class="SpellE"><font face="Arial" size="2">Carvalho<br /></font></span></b><font face="Arial"><font size="2">Spanish<o:p></o:p></font></font></p> <p class="MsoNormal"><o:p><font face="Arial" size="2">&nbsp;</font></o:p></p></td> <td valign="top" width="369"> <p class="MsoNormal"><o:p>&nbsp;</o:p></p> <table class="MsoNormalTable" style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .75pt; mso-cellspacing: 1.5pt" cellspacing="3" cellpadding="0" width="100%" border="1"> <tbody> <tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"> <td> <p class="MsoNormal"><font face="Arial"><font size="2"><b>Name:</b><o:p></o:p></font></font></p></td> <td> <p class="MsoNormal"><font face="Arial"><font size="2"><b>Nationality:</b><o:p></o:p></font></font></p></td></tr> <tr style="mso-yfti-irow: 1"> <td> <p class="MsoNormal"><input size="25" value="António Ribeiro" name="AuthorsPlaceholder"><o:p><font face="Arial" size="2"></font></o:p></p></td> <td> <p class="MsoNormal"><input size="30" value="Portuguese" name="AuthorsPlaceholder"><o:p><font face="Arial" size="2"></font></o:p></p></td></tr> <tr style="mso-yfti-irow: 2"> <td> <p class="MsoNormal"><input size="25" value="Cristina Carvalho" name="AuthorsPlaceholder"><o:p><font face="Arial" size="2"></font></o:p></p></td> <td> <p class="MsoNormal"><input size="30" value="Spanish" name="AuthorsPlaceholder"><o:p><font face="Arial" size="2"></font></o:p></p></td></tr> <tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"> <td> <p class="MsoNormal"><input size="25" value="[type name here]" name="AuthorsPlaceholder"><o:p><font face="Arial" size="2"></font></o:p></p></td> <td> <p class="MsoNormal"><input size="30" value="[type nationality here]" name="AuthorsPlaceholder"><o:p><font face="Arial" size="2"></font></o:p></p></td></tr></tbody></table> <p class="MsoNormal"><font face="Arial" size="2">…<br /></font><font face="Arial"><font size="2"><u><span style="COLOR: blue">Save<br /></span></u><u><span style="COLOR: blue">Save and Exit</span></u></font></font></p></td></tr></tbody></table> <p class="MsoNormal"><font face="Arial"><font size="2"><span class="SpellE"><b style="mso-bidi-font-weight: normal">Presentation.xsl</b></span><b style="mso-bidi-font-weight: normal"><o:p></o:p></b></font></font></p> <p class="MsoNormal"><span class="GramE"><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;?</span> <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xml</span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">version</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="1.0"?&gt;<br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:stylesheet</span></span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xmlns</span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'">:</span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">xsl</span> </span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="https://www.w3.org/1999/XSL/Transform"</span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"> version</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="1.0"&gt;<br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:output</span></span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">method</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="html"&gt;&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl:output</span> </span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"><br />&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:template</span></span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">match</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="/"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span><span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">div</span><span style="COLOR: blue">&gt;</span></span>Authors List<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">div</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">hr</span></span><span style="COLOR: blue">&gt;&lt;/</span><span style="COLOR: maroon">hr</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:apply</span></span></span><span style="COLOR: maroon">-templates</span> <span style="COLOR: blue">/&gt;<o:p></o:p></span> <br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:template</span></span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<br /><br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:template</span></span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">match</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="Item"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">div</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">B</span><span style="COLOR: blue">&gt;&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:value</span></span></span><span style="COLOR: maroon">-of</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="Cell[@id='Name']"/&gt;&lt;/</span><span style="COLOR: maroon">B</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">div</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">div</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">xsl:</span></span><span style="COLOR: maroon">value</span></span><span style="COLOR: maroon">-of</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="Cell[@id='Nationality']"/&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">div</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>&nbsp;<span style="mso-spacerun: yes">&nbsp;</span> <span style="COLOR: blue">&lt;</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">br</span></span></span><span style="COLOR: blue">&gt;&lt;/</span><span class="SpellE"><span style="COLOR: maroon">br</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span> <br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:template</span></span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<br /><br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:stylesheet</span></span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;</span></p> <p class="MsoNormal"><font face="Arial"><font size="2"><span class="SpellE"><b style="mso-bidi-font-weight: normal"><br />Authoring.xsl</b></span><b style="mso-bidi-font-weight: normal"><o:p></o:p></b></font></font></p> <p class="MsoNormal"><span class="GramE"><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;?</span> <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xml</span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">version</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="1.0"</span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">?&gt;<br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:stylesheet</span></span> </span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'"></span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xmlns</span><span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'">:</span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'">xsl</span></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="https://www.w3.org/1999/XSL/Transform"</span><span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Courier New'"> version</span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">="1.0"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:output</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">method</span><span style="COLOR: blue">="html"&gt;&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl:output</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:template</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">match</span><span style="COLOR: blue">="/"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">table</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">width</span><span style="COLOR: blue">="100%"</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">style</span><span style="COLOR: blue">="BORDER-RIGHT: thin solid; BORDER-TOP: thin solid; BORDER-LEFT: thin solid; BORDER-BOTTOM: thin solid"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">tr</span></span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">td</span></span><span style="COLOR: blue">&gt;&lt;</span><span style="COLOR: maroon">b</span><span style="COLOR: blue">&gt;</span>Name:<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">b</span><span style="COLOR: blue">&gt;&lt;/</span><span style="COLOR: maroon">td</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">td</span></span><span style="COLOR: blue">&gt;&lt;</span><span style="COLOR: maroon">b</span><span style="COLOR: blue">&gt;</span>Nationality:<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">b</span><span style="COLOR: blue">&gt;&lt;/</span><span style="COLOR: maroon">td</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">tr</span></span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:apply</span></span></span><span style="COLOR: maroon">-templates</span> <span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">table</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">br</span></span></span><span style="COLOR: blue">&gt;&lt;/</span><span class="SpellE"><span style="COLOR: maroon">br</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:template</span></span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:template</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">match</span><span style="COLOR: blue">="Item"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">tr</span></span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">td</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">input</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">size</span><span style="COLOR: blue">="25"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:attribute</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="name"&gt;&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl:value</span></span><span style="COLOR: maroon">-of </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="../@id"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/<span class="GramE">&gt;<span style="COLOR: windowtext">:</span></span>&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl:value</span></span><span style="COLOR: maroon">-of </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="@id"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;</span>:Name<span style="COLOR: blue">&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl:attribute</span></span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:attribute</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="value"&gt;&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl:value</span></span><span style="COLOR: maroon">-of</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="Cell[@id='Name']"</span> <span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl:attribute</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">input</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">td</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="GramE"><span style="COLOR: maroon">td</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">input</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">size</span> <span style="COLOR: blue">="30"&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:attribute</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="name"&gt;&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl:value</span></span><span style="COLOR: maroon">-of </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="../@id"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/<span class="GramE">&gt;<span style="COLOR: windowtext">:</span></span>&lt;</span><span class="SpellE"> <span style="COLOR: maroon">xsl:value</span></span><span style="COLOR: maroon">-of </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="@id"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;</span>:Nationality<span style="COLOR: blue">&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl:attribute</span></span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:attribute</span></span> </span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="value"&gt;&lt;</span><span class="SpellE"><span style="COLOR: maroon">xsl:value</span></span><span style="COLOR: maroon">-of</span> <span style="COLOR: fuchsia"></span><span style="COLOR: red">select</span><span style="COLOR: blue">="Cell[@id='Nationality']"</span> <span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl:attribute</span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">input</span><span style="COLOR: blue">&gt;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">td</span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span class="SpellE"><span class="GramE"><span style="COLOR: maroon">tr</span></span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: blue">&lt;/</span><span class="SpellE"><span style="COLOR: maroon">xsl<span class="GramE">:template</span></span></span><span style="COLOR: blue">&gt;<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"><br />&lt;/</span><span class="SpellE"><span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Courier New'">xsl<span class="GramE">:stylesheet</span></span> </span><span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;</span></p> <div class="MsoNormal" style="TEXT-ALIGN: center" align="center">&nbsp;</div> <div class="MsoNormal" style="TEXT-ALIGN: center" align="center"><font face="Arial" size="2"> <hr align="center" width="100%" size="3" /> </font></div> <p class="MsoNormal"><b style="mso-bidi-font-weight: normal"><font face="Arial"><font size="2">How it Works</font></font></b></p> <p class="MsoNormal"><font face="Arial" size="2">When the user selects Save or Save and Exit in the Web Author console, the XML Placeholder Control must have the logic necessary to check the HTTP form post fields, append new Items to the XML document where new Names or Nationalities were filled in, and delete Items for rows where all text boxes were cleaned up. This can be easily achieved applying a special naming convention to these <span class="SpellE">TextBoxes</span> and rebuilding the XML document after the <span class="SpellE">PostBack</span> based on its contents.</font></p> <p class="MsoNormal"><font face="Arial" size="2">Suppose your <span class="SpellE">XmlPlaceholder</span> is <span class="SpellE">MyAuthorsList</span>, the <span class="SpellE">TextBox</span> names would be:</font><o:p><font face="Arial" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN-LEFT: 36pt"><span class="SpellE"><font face="Arial"><font size="2">MyAuthorsList<span class="GramE">:Author.<i style="mso-bidi-font-style: normal">n</i>:Name<br /></span></font></font></span><span class="SpellE"><font face="Arial"><font size="2">MyAuthorsList<span class="GramE">:Author.<i style="mso-bidi-font-style: normal">n</i>:Nationality</span></font></font></span></p> <p class="MsoNormal"><o:p><font face="Arial" size="2">&nbsp;</font></o:p><font face="Arial" size="2">(<span class="GramE">where</span> <i style="mso-bidi-font-style: normal">n</i> should be a different value for each Author)</font><font face="Arial"><font size="2"><o:p>&nbsp;</o:p></font></font></p> <p class="MsoNormal"><font face="Arial" size="2">A full implementation of this XML Custom Placeholder is shown bellow.</font><o:p><font face="Arial" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="mso-layout-grid-align: none"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">[ <span class="SpellE">SupportedPlaceholderDefinitionType</span></span>( <span class="SpellE"><span style="COLOR: blue">typeof</span> </span>(<span class="SpellE">XmlPlaceholderDefinition</span>) ) ]<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">public</span> </span><span style="COLOR: blue">class</span> <span class="SpellE">MyXmlPlaceholderControl</span> : <span class="SpellE">BasePlaceholderControl<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">private</span> </span>Xml <span class="SpellE">xmlAuthoringControl</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">private</span> </span>Xml <span class="SpellE">xmlPresentationControl</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">private</span> </span><span style="COLOR: blue">string</span> <span class="SpellE">configUrl</span>;<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>[<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">Browsable</span> </span><span class="GramE">(</span><span style="COLOR: blue">true</span>),<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">Description(</span>"A relative <span class="SpellE">url</span> of the folder containing XSLT templates and XML template data"),<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">Category(</span>"Data"),<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">DefaultValue</span> </span><span class="GramE">(</span>"")<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>]<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">public</span> </span><span style="COLOR: blue">string</span> <span class="SpellE">ConfigUrl</span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">get</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">return</span> </span><span class="SpellE"><span style="COLOR: blue">this</span>.configUrl</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">set</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.configUrl</span> = <span style="COLOR: blue">value</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">public</span> </span><span class="SpellE">MyXmlPlaceholderControl</span>()<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">configUrl</span> </span>= "";<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">protected</span> </span><span style="COLOR: blue">override</span> <span style="COLOR: blue">void</span> <span class="SpellE">CreateAuthoringChildControls</span>(<span class="SpellE">BaseModeContainer</span> <span class="SpellE">authoringContainer</span>)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlAuthoringControl</span> = <span style="COLOR: blue">new</span> <span class="GramE">Xml(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlAuthoringControl.ID</span> = "<span class="SpellE">XmlAuthoringControl</span>";<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">authoringContainer.Controls.Add</span> </span><span class="GramE">(</span> <span class="SpellE"><span style="COLOR: blue">this</span>.xmlAuthoringControl</span> );<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /><br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">protected</span> </span><span style="COLOR: blue">override</span> <span style="COLOR: blue">void</span> <span class="SpellE">CreatePresentationChildControls</span>(<span class="SpellE">BaseModeContainer</span> <span class="SpellE">presentationContainer</span>)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlPresentationControl</span> = <span style="COLOR: blue">new</span> <span class="GramE">Xml(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlPresentationControl.ID</span> = "<span class="SpellE">XmlPresentationControl</span>";<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">presentationContainer.Controls.Add</span> </span><span class="GramE">(</span> <span class="SpellE"><span style="COLOR: blue">this</span>.xmlPresentationControl</span> );<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">protected</span> </span><span style="COLOR: blue">override</span> <span style="COLOR: blue">void</span> <span class="SpellE">LoadPlaceholderContentForAuthoring</span>(<span class="SpellE">PlaceholderControlEventArgs</span> e)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">EnsureChildControls</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">try</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//load existing xml document stored in the placeholder<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlDocument</span> xml = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XmlDocument</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">try</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xml.LoadXml</span> </span><span class="GramE">(</span>((<span class="SpellE">XmlPlaceholder</span>)<span class="SpellE"><span style="COLOR: blue">this</span>.BoundPlaceholder</span>).<span class="SpellE">XmlAsString</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//if is empty or invalid, create a default xml document<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">catch</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xml.LoadXml</span> </span><span class="GramE">(</span>"&lt;<span class="SpellE">ItemList</span> id=\"\"&gt;&lt;/<span class="SpellE">ItemList</span>&gt;");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//apply a control id to the xml document<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">xml[</span>"<span class="SpellE">ItemList</span>"].Attributes["id"].Value = <span class="SpellE"><span style="COLOR: blue">this</span>.ID</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//append the xml template for a default item<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlDocument</span> <span class="SpellE">xmlTemplate</span> = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XmlDocument</span> </span><span class="GramE">(</span>);<br /><br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xmlTemplate.Load</span> </span><span class="GramE">(</span><span class="SpellE">Context.Server.MapPath</span>(<span class="SpellE">ConfigUrl</span> + "/<span class="SpellE">Template.xml</span>"));<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">xml[</span>"<span class="SpellE">ItemList</span>"].<span class="SpellE">InnerXml</span> = xml["<span class="SpellE">ItemList</span>"].<span class="SpellE">InnerXml</span> + <span class="SpellE">xmlTemplate<br /></span>"<span class="SpellE">ItemList</span>"].<span class="SpellE">InnerXml</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//render the transformation<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlAuthoringControl.DocumentContent</span> = <span class="SpellE">xml.InnerXml</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span><span class="SpellE">configUrl</span> = <span class="SpellE"><span style="COLOR: blue">this</span>.ConfigUrl</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">if</span>(</span> <span class="SpellE">ConfigUrl</span> != <span class="SpellE">String.Empty</span> )<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XslTransform</span> <span class="SpellE">myTrans</span> = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XslTransform</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span><span class="SpellE">xsltPath</span> = <span class="SpellE">Context.Server.MapPath</span>(<span class="SpellE">ConfigUrl</span> + "/<span class="SpellE">Authoring.xsl</span>");</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="SpellE">myTrans.Load</span> <span class="GramE">( <span class="SpellE">xsltPath</span></span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlAuthoringControl.Transform</span> = <span class="SpellE">myTrans</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">catch</span> </span>(Exception exp)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">// show the error as placeholder content<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlAuthoringControl.DocumentContent</span> = "&lt;error&gt;" + <span class="SpellE">exp.Message</span> + "&lt;/error&gt;";<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">protected</span> </span><span style="COLOR: blue">override</span> <span style="COLOR: blue">void</span> <span class="SpellE">LoadPlaceholderContentForPresentation</span>(<span class="SpellE">PlaceholderControlEventArgs</span> e)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">EnsureChildControls</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">try</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//render the transformation<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlPresentationControl.DocumentContent</span> = ((<span class="SpellE">XmlPlaceholder</span><span class="GramE">)<span class="SpellE"><span style="COLOR: blue">his</span>.BoundPlaceholder</span></span>).<span class="SpellE">XmlAsString</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span><span class="SpellE">configUrl</span> = <span class="SpellE"><span style="COLOR: blue">this</span>.ConfigUrl</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">if</span>(</span> <span class="SpellE">ConfigUrl</span> != <span class="SpellE">String.Empty</span> )<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XslTransform</span> <span class="SpellE">myTrans</span> = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XslTransform</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span><span class="SpellE">xsltPath</span> = <span class="SpellE">Context.Server.MapPath</span>(<span class="SpellE">ConfigUrl</span> + "/<span class="SpellE">Presentation.xsl</span>");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">myTrans.Load</span> <span class="GramE">( <span class="SpellE">xsltPath</span></span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlPresentationControl.Transform</span> = <span class="SpellE">myTrans</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">catch</span> </span>(Exception exp)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">// show the exception as placeholder content<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span style="COLOR: blue">this</span>.xmlPresentationControl.DocumentContent</span> = "&lt;error&gt;" + <span class="SpellE">exp.Message</span> + "&lt;/error&gt;";<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">protected</span> </span><span style="COLOR: blue">override</span> <span style="COLOR: blue">void</span> <span class="SpellE">SavePlaceholderContent</span>(<span class="SpellE">PlaceholderControlSaveEventArgs</span> e)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">EnsureChildControls</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">try</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//initialize xml document<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlDocument</span> xml = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XmlDocument</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xml.LoadXml</span> </span><span class="GramE">(</span>"&lt;<span class="SpellE">ItemList</span> id=\"" + <span class="SpellE"><span style="COLOR: blue">this</span>.ID</span> + "\"&gt;&lt;/<span class="SpellE">ItemList</span>&gt;");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//rebuild xml document using form field data<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE"><span style="COLOR: blue">foreach</span> </span></span><span class="GramE">(</span><span style="COLOR: blue">string</span> f <span style="COLOR: blue">in</span> <span class="SpellE">Context.Request.Form</span>)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//look for form field named "<span class="SpellE">PlaceholderId<span class="GramE">:ItemId:CellId</span></span>"<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//such as "MyAuthorsList<span class="GramE">:Author.1:Name</span>"<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span>[</span>] ff = <span class="SpellE">f.Split</span>(':');<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">if</span>(</span>(<span class="SpellE">ff.Length</span> == 3) &amp;&amp; (ff[0] == <span class="SpellE"><span style="COLOR: blue">this</span>.ID</span>))<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 6">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">xml</span> = <span class="SpellE">AppendItem</span>(xml, ff[1], ff[2], <span class="SpellE">Context.Request.Form</span>[f].<span class="SpellE">ToString</span>());<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//remove empty items from the xml document<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE"><span style="COLOR: blue">foreach</span> </span></span><span class="GramE">(</span><span class="SpellE">XmlNode</span> n <span style="COLOR: blue">in</span> <span class="SpellE">xml.SelectNodes</span>("/<span class="SpellE">ItemList</span>/Item"))<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">if</span>(</span><span class="SpellE">n.InnerText.Trim</span>().Equals(""))<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 6">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">xml[</span>"<span class="SpellE">ItemList</span>"].<span class="SpellE">RemoveChild</span>(n);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//remove the template item if it was not filled<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlDocument</span> <span class="SpellE">xmlDefault</span> = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XmlDocument</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xmlDefault.Load</span> </span><span class="GramE">(</span><span class="SpellE">Context.Server.MapPath</span>(<span class="SpellE">ConfigUrl</span> + "/<span class="SpellE">Template.xml</span>"));<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xmlDefault</span> </span><span class="GramE">[</span>"<span class="SpellE">ItemList</span>"].Attributes["id"].Value = <span class="SpellE"><span style="COLOR: blue">this</span>.ID</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE"><span style="COLOR: blue">int</span> </span></span>p = <span class="SpellE">xml.InnerXml.IndexOf</span>(<span class="SpellE">xmlDefault</span>["<span class="SpellE">ItemList</span>"].<span class="SpellE">InnerXml</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">if</span>(</span>p &gt;= 0)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">xml.InnerXml</span> = <span class="SpellE"><span class="GramE">xml.InnerXml.Remove</span> </span><span class="GramE">(</span>p, <span class="SpellE">xmlDefault</span>["<span class="SpellE">ItemList</span>"].<span class="SpellE">InnerXml.Length</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//or apply a new id for the new item<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">else</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span>id = <span class="SpellE">xmlDefault</span>["<span class="SpellE">ItemList</span>"]["Item"].Attributes["id"].Value;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">xml[</span>"<span class="SpellE">ItemList</span>"].<span class="SpellE">LastChild.Attributes</span>["id"].Value = id + "." + <span class="GramE">xml[</span>"<span class="SpellE">ItemList</span>"].<span class="SpellE">ChildNodes.Count.ToString</span>();<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">&nbsp;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//stored xml in the placeholder<o:p></o:p></span>&nbsp;<br />&nbsp;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>((<span class="SpellE">XmlPlaceholder</span><span class="GramE">)<span class="SpellE"><span style="COLOR: blue">this</span>.BoundPlaceholder</span></span>).<span class="SpellE">XmlAsString</span><span style="mso-spacerun: yes">&nbsp; </span>= <span class="SpellE">xml.InnerXml</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">catch</span> </span>(Exception exp)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">// Possible validation exceptions<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">// If you want, you can override it with your own custom exception<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span><span class="SpellE">newExceptionMessage</span> = <span class="SpellE">String.Format</span>( "[{0} \"{1}\"] Error saving placeholder contents: {2}", <span class="SpellE"><span style="COLOR: blue">this</span>.GetType</span>().Name, <span class="SpellE"><span style="COLOR: blue">this</span>.ID</span>, <span class="SpellE">exp.Message</span> );<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Exception <span class="SpellE">overriddenException</span> = <span style="COLOR: blue">new</span> <span class="GramE">Exception(</span><span class="SpellE">newExceptionMessage</span>, exp);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">// raise new exception so the <span class="SpellE">BasePlaceholderControl</span> can handle it<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">throw</span> </span><span class="SpellE">overriddenException</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">private</span> </span><span class="SpellE">XmlDocument</span> <span class="SpellE">AppendItem</span>(<span class="SpellE">XmlDocument</span> xml, <span style="COLOR: blue">string</span> item, <span style="COLOR: blue">string</span> <span class="SpellE">cellName</span>, <span style="COLOR: blue">string</span> <span class="SpellE">cellValue</span>)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//get or create item element<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlNode</span> <span class="SpellE">itemElement</span> = <span class="SpellE"><span class="GramE">xml.SelectSingleNode</span> </span><span class="GramE">(</span>"/<span class="SpellE">ItemList</span>/Item[@id=\"" + item + "\"]");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">if</span>(</span><span class="SpellE">itemElement</span> == <span style="COLOR: blue">null</span>)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">itemElement</span> </span>= <span class="SpellE">xml.CreateElement</span>("Item");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang="IT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: IT">XmlAttribute itemIdAttribute = xml.CreateAttribute("id");<br /></span><span lang="IT" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: IT"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span class="SpellE"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">itemIdAttribute.Value</span> </span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">= item;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">itemElement.Attributes.Append</span> </span><span class="GramE">(</span><span class="SpellE">itemIdAttribute</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE">xml[</span>"<span class="SpellE">ItemList</span>"].<span class="SpellE">AppendChild</span>(<span class="SpellE">itemElement</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: green">//get or create cell element<o:p></o:p></span>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlElement</span> <span class="SpellE">cellElement</span> <span class="GramE">=<span style="mso-spacerun: yes">&nbsp; </span><span class="SpellE">xml.CreateElement</span></span>("Cell");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlAttribute</span> <span class="SpellE">idAttribute</span> = <span class="SpellE"><span class="GramE">xml.CreateAttribute</span> </span><span class="GramE">(</span>"id");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">idAttribute.Value</span> = <span class="SpellE">cellName</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">cellElement.Attributes.Append</span> </span><span class="GramE">(</span><span class="SpellE">idAttribute</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">cellElement.InnerText</span> = <span class="SpellE">cellValue</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">itemElement.AppendChild</span> </span><span class="GramE">(</span><span class="SpellE">cellElement</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">return</span> </span>xml;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">protected</span> </span><span style="COLOR: blue">override</span> <span style="COLOR: blue">void</span> <span class="SpellE">OnPopulatingDefaultContent</span>(<span class="SpellE">PlaceholderControlCancelEventArgs</span> e)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">try</span>&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span><span class="SpellE">xmlPath</span> = <span class="SpellE">Context.Server.MapPath</span>(<span class="SpellE">ConfigUrl</span> + "/<span class="SpellE">Default.xml</span>");<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">XmlDocument</span> xml = <span style="COLOR: blue">new</span> <span class="SpellE"><span class="GramE">XmlDocument</span> </span><span class="GramE">(</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE"><span class="GramE">xml.Load</span> </span><span class="GramE">(</span><span class="SpellE">xmlPath</span>);<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="SpellE">xmlAuthoringControl.DocumentContent</span> = <span class="SpellE">xml.InnerXml</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">catch</span> </span>(Exception f)<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="GramE"><span style="COLOR: blue">string</span> </span>message = <span class="SpellE">f.Message</span>;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p>&nbsp;</o:p>&nbsp;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<br /></span><o:p>&nbsp;<br /></o:p><o:p>&nbsp;<br /></o:p> <hr align="center" width="100%" size="3" /> <p></p> <p class="MsoNormal"><b style="mso-bidi-font-weight: normal"><font face="Arial"><font size="2">Summary</font></font></b></p> <p class="MsoNormal"><font face="Arial" size="2">This sample XML Custom Placeholder renders its XML content using different XSL templates for Authoring and Presentation mode. Defining special XSL templates for authoring is an easy approach to create an authoring interface for editing that XML content.</font></p> <p class="MsoNormal"><font face="Arial" size="2">To use this special XML Custom Placeholder, just drag it into an XML template. Then create a folder in your Web Application containing 3 files:</font></p> <p class="MsoNormal"><font face="Arial"><font size="2"><em><span class="SpellE">Template.xml</span><o:p></o:p></em></font></font></p> <p class="MsoNormal"><font face="Arial" size="2">The piece of xml representing a new item template</font></p> <p class="MsoNormal"><o:p><font face="Arial" size="2">&nbsp;</font></o:p><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'">&lt;<span class="SpellE">ItemList</span> id="MyPlaceholderControl1"&gt;<br />&nbsp;</span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;Item id="Author"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;Cell id="Nationality"<span class="GramE">&gt;[</span>type&nbsp;nationality here]&lt;/Cell&gt;<span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/Item&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'">&lt;/<span class="SpellE">ItemList</span>&gt;<o:p></o:p></span></p> <p class="MsoNormal"><font face="Arial"><font size="2"><em><span class="SpellE"><br />Authoring.xsl</span><o:p></o:p></em></font></font></p> <p class="MsoNormal"><font face="Arial"><font size="2">The XLST template that should be applied in Authoring Mode<o:p></o:p></font></font></p> <p class="MsoNormal"><o:p>&nbsp;</o:p><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'">&lt;<span class="SpellE">xsl<span class="GramE">:template</span></span> match="Item"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>...<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;input size="10"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;<span class="SpellE">xsl<span class="GramE">:attribute</span></span> name="name"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;<span class="SpellE">xsl<span class="GramE">:value</span></span>-of select="../@id" /<span class="GramE">&gt;:</span>&lt;<span class="SpellE">xsl:value</span>-of select="@id" /&gt;:Nationality<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/<span class="SpellE">xsl<span class="GramE">:attribute</span></span>&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;<span class="SpellE">xsl<span class="GramE">:attribute</span></span> name="value"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;<span class="SpellE">xsl<span class="GramE">:value</span></span>-of select="Cell[@id='Nationality']" /&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/<span class="SpellE">xsl<span class="GramE">:attribute</span></span>&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;/input&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>...<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'">&lt;/<span class="SpellE">xsl<span class="GramE">:template</span></span>&gt;<o:p></o:p></span></p> <p class="MsoNormal"><font face="Arial"><font size="2"><span class="SpellE"><em><br />Presentation.xsl</em></span><o:p></o:p></font></font></p> <p class="MsoNormal"><font face="Arial" size="2">The XLST template that should be applied in Presentation Mode</font></p> <p class="MsoNormal"><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'">&lt;<span class="SpellE">xsl<span class="GramE">:template</span></span> match="Item"&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>...<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;<span class="GramE">div</span>&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>&lt;<span class="SpellE"><span class="GramE">xsl:</span>value</span>-of select="Cell[@id='Nationality']"/&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;/div&gt;<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>...<br /></span><span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Times New Roman'">&lt;/<span class="SpellE">xsl<span class="GramE">:template</span></span>&gt;<o:p></o:p></span></p> <p class="MsoNormal"><font face="Arial"><font size="2"><span class="SpellE"><span class="GramE">Finnaly</span></span><span class="GramE">,</span> set the <span class="SpellE">ConfigUrl</span> property for the Placeholder pointing the folder you created. The control does all the rest for you.&nbsp;</font></font><o:p><font face="Arial" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal"><font face="Arial" size="2">To get the full source code for this example, e-mail the author </font><a href="mailto:aribeiro@microsoft.com"><font face="Arial" size="2">aribeiro@microsoft.com</font></a></p> <p class="MsoNormal"><o:p><font face="Arial" size="2"></font></o:p>&nbsp;</p> <p class="MsoNormal"><o:p><font face="Arial" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p> <p class="MsoNormal"><o:p>&nbsp;</o:p></p></div>]]></content:encoded>
    </item>
  </channel>
</rss>