Из вашего xslt кажется, что вы говорите о навигации. Вместо циклического обхода различных шаблонов я бы создал специальный шаблон навигации, который имеет только одно поле с именем ShowInNavigation.
Тогда все ваши другие шаблоны унаследуют этот, и навигация xslt станет проще
<xsl:template match="*" mode="main">
<div id="aside">
<ul id="nav">
<xsl:for-each select="$home/descendant-or-self::item[sc:fld('ShowInNavigation') = '1']">
<li>
<sc:link>
<sc:text field="Title"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class="advertisement">
<sc:image field="Image"></sc:image>
</div>
</div>
</xsl:template>
Также не используйте Потомок или Сам :: Элемент в навигации, потому что с ростом сайта навигация станет вашим узким местом.
Лучше использовать $ home / item [sc: fld ('ShowInNavigation') = '1'] и затем жестко закодировать домашний узел выше. Таким образом, xslt станет:
<xsl:template match="*" mode="main">
<div id="aside">
<ul id="nav">
<li>
<sc:link select="$home">
<sc:text field="Title"></sc:text>
</sc:link>
</li>
<xsl:for-each select="$home/item[sc:fld('ShowInNavigation') = '1']">
<li>
<sc:link>
<sc:text field="Title"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class="advertisement">
<sc:image field="Image"></sc:image>
</div>
</div>
</xsl:template>