Hi azzlack,
As I'm not sure of your navigation structure, there's a bit of guess work from me.
Since the xsl:output method is set to "xml", any empty tags are being rendered as:
Code:<ul class="level_3" />
Which is causing problems with certain browsers rendering the HTML/CSS!
From looking at your XSLT, there are different conditions in the xsl:if and xsl:for-each conditions.
i.e. the xsl:for-each is testing for "@nodeTypeAlias != 'Person'" (but the xsl:if isn't)
The quickest way to resolve this is to use the same condition:
Code:<xsl:template name="menu">
<xsl:param name="level"/>
<xsl:if test="count($currentPage/ancestor-or-self::node [@level=$level]/node [string(data [@alias='umbracoNaviHide']) != '1' and @nodeTypeAlias != 'Person']) > '0'">
<ul class="level_{@level}">
<xsl:for-each select="$currentPage/ancestor-or-self::node [@level=$level]/node [string(data [@alias='umbracoNaviHide']) != '1' and @nodeTypeAlias != 'Person']">
<li id="{@urlName}">
<h3>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:if test="$currentPage/@id = current()/@id">
<xsl:attribute name="class">Selected</xsl:attribute>
</xsl:if>
<xsl:attribute name="title">
<xsl:value-of select="@nodeName"/>
</xsl:attribute>
<xsl:value-of select="@nodeName"/>
</a>
</h3>
<xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id">
<xsl:call-template name="menu">
<xsl:with-param name="level" select="$level+1"/>
</xsl:call-template>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</xsl:template>
Otherwise the <ul> tag is being rendered without any <li> tags.
Cheers,
- Lee
http://leekelleher.com/