У меня есть меню, сгенерированное в макросе Umbraco:
<xsl:for-each select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and @level <= $maxLevel and (umbraco.library:IsProtected(@id, @path) = false() or umbraco.library:HasAccess(@id, @path) = true())] ">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
В этом foreach я бы хотел оператор if, который принимает только определенный тип документа, генерирует соответствующие теги li / a и вставляетParam от этого doctype в HREF.Единственное, о чем я могу думать, это что-то вроде этого:
<xsl:if test="$currentPage/Redirect">
<li>
<a href="{$urlRedirect)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:if>
Где Redirect
- это тип документа, а $urlRedirect
- это параметр.
Прими меня, это моепервый день обучения XSLT
ОБНОВЛЕНИЕ: Вот полный код, чтобы вы могли увидеть его в контексте:
<xsl:template match="/">
<!-- The fun starts here -->
<!-- update this variable on how deep your navigation should be -->
<xsl:variable name="maxLevel" select="5"/>
<xsl:variable name="minLevel" select="4"/>
<xsl:choose>
<xsl:when test="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and @level <= $maxLevel and (umbraco.library:IsProtected(@id, @path) = false() or umbraco.library:HasAccess(@id, @path) = true())] ">
<ul>
<xsl:for-each select="$currentPage/* [@isDoc and string(umbracoNaviHide) != '1' and @level <= $maxLevel and (umbraco.library:IsProtected(@id, @path) = false() or
umbraco.library:HasAccess(@id, @path) = true())] ">
<!-- Here is where I want my if/else logic -->
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:when>
<xsl:otherwise>
<ul>
<xsl:for-each select="$currentPage/../* [@level > 3 and @isDoc and string(umbracoNaviHide) != '1' and (umbraco.library:IsProtected(@id, @path) = false() or umbraco.library:HasAccess(@id, @path) = true())] ">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:otherwise>
</xsl:choose>
</xsl:template>