if you do not need another html structure or rendered Information than the default sharepoint navigation, then it is recomended to brand it using CSS and JavaScript.
Otherwise you have to create your own control. In your Control you can use the default sharepoint navigation control with a default or custom Site Map Provider.
This example shows howto build an own quick launch control. You can adopt this logic for a top navigation. Therefor you only need a different Site Map Provider.
<asp:SiteMapDataSource
SiteMapProvider="SPNavigationProvider"
ShowStartingNode="False"
id="QuickLaunchSiteMap"
StartingNodeUrl="sid:1025"
runat="server" />
<SharePoint:AspMenu
id="V4QuickLaunchMenu"
runat="server"
EnableViewState="false"
DataSourceId="QuickLaunchSiteMap"
UseSimpleRendering="true"
UseSeparateCss="false"
Orientation="Vertical"
StaticDisplayLevels="2"
MaximumDynamicDisplayLevels="0"
SkipLinkText=""
CssClass="s4-ql" />
More Informationen about this topic you will find on [Technet][1]Technet.
But this control is rendering a html structure which is fix. So you cannot change it. If you wanna have your own html structure then you need C# and ASP.Net
If you wanna customize the default navigation using CSS and JavaScript then you can try [this][2]this
I hope i could help. If not let me know! [1]: http://msdn.microsoft.com/de-de/library/ms476607(v=office.14).aspx "Technet" [2]: http://chrisstahl.wordpress.com/2013/12/31/customizing-sharepoint-2013-global-navigation-with-css-and-jquery-part-2/ "this"