The way we do things like navigation, are through page controls. eg.
<% control Menu(1) %>
<li class="$LinkingMode"><a href="$Link" title="Go to the $Title page">$MenuTitle</a></li>
<% end_control %>
What this does is take the first level of menu in the 'site tree', the way we organise pages within the SilverStripe CMS. It is done in a similar way to the windows explorer directory listing.
The same example can be done using <% control Menu(2) %> where it will take the second level pages instead of the first. You can also nest them to achieve a nice structure on your site.
I would suggest taking a look at this, since we believe this is a very simple way of creating navigation. You can even create sub-navigation items that are taken from another branch in the site tree. eg. I create a new page called 'Footer Navigation'. I would then use the following control to output all the pages (or children) underneath it.
<% control ChildrenOf(footer-navigation) %>
and you would do the same as above to create a <ul> with <li> elements inside.