Как вы генерируете навигацию по сайту?

Меня интересует, как другие люди справляются с навигацией на сайте. Не часть стиля или удобства использования, а часть поколения. Большинство веб-сайтов имеют своего рода «дерево навигации», которое отображается в форме одного или нескольких уровней меню - в какой форме вы сохраняете и обрабатываете это дерево? Самое простое решение - статический шаблон меню, примерно такой:

<ul id="menu">
   <li><a href="…">One</a></li>
   <li><a href="…">Two</a></li>
   <li><a href="…">Three</a></li>
</ul>

Но это не очень гибко. Вы не можете просто отметить текущую страницу в меню, и нет простого способа показать или скрыть часть дерева меню в зависимости от текущей страницы. (Либо это?)

Я придумал дерево навигации, что-то вроде этого:

    - title: Fruits
      nodes:
        - title: Apples
        - title: Oranges
        - title: Bananas
    - title: Music and Stuff
      url: music
      nodes:
        - title: Classical
        - title: Jazz

Это дерево загружается специальнымNavigation&nbsp;класс, который может обслуживать части навигации в зависимости от текущего пути запроса. Кажется, это работает немного лучше, но все же мне очень любопытны решения других людей.