alxpst, показ уровней вложенности легко можно ограничить на уровне XSL.
В последних строках шаблона можно добавить ещё одну проверку на уровень вложенности.
Заменив
<xsl:if test="$sub">
<ul>
<xsl:apply-templates select="$sub" />
</ul>
</xsl:if>
на
<xsl:if test="$sub and count(ancestor::*) < 2">
<ul>
<xsl:apply-templates select="$sub" />
</ul>
</xsl:if>
Где
2 — требуемый уровень вложенности.