 <p>XML loves recursion. It's a lot of work to lay out the nodes one-by-one or into some gigantic table grid -- your data format is heirarchical and your processing method should be as well.</p> <blockquote> <p>Yep. Tried it. I'm just having trouble getting my mind around the best way to do it. I could use tables. I could use css. Absolute positioning. But nothing I come up with in HTML is really working for me.</p> </blockquote> <p>XSLT is pretty good at transforming xml into html. the following xslt transforms your xml into a series of nested divs and tables. I'm using a table to get each colleague group aligned. seemed like the easiest way. </p> <pre><code>&lt;xsl:template match="employee"&gt; &lt;div class="wrapper"&gt; &lt;div class="smallline" /&gt; &lt;div class="box"&gt; &lt;xsl:value-of select="name"/&gt; &lt;br/&gt; &lt;xsl:value-of select="title"/&gt; &lt;/div&gt; &lt;xsl:if test="directReports/employee"&gt; &lt;div class="smallline"&gt; &lt;/div&gt; &lt;table&gt; &lt;tr&gt; &lt;xsl:for-each select="directReports/employee"&gt; &lt;td&gt; &lt;xsl:apply-templates select="." /&gt; &lt;/td&gt; &lt;/xsl:for-each&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/xsl:if&gt; &lt;/div&gt; &lt;/xsl:template&gt; </code></pre> <p>To preview, save the xslt from <a href="http://pastebin.com/f6597d519" rel="nofollow noreferrer">http://pastebin.com/f6597d519</a></p> <p>Add <code>&lt;?xml-stylesheet href="foo.xslt" type="text/xsl"?&gt;</code> to the top of your employees xml, and open in a browser. In practice, you may want to transform on the server to avoid compatibility issues. To do that in C#, see <a href="http://stackoverflow.com/questions/34093/how-to-apply-an-xslt-stylesheet-in-c">How to apply an XSLT Stylesheet in C#</a></p>