/ Published in: XSLT
URL: umbracotest
Expand |
Embed | Plain Text
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:tagsLib="urn:tagsLib" xmlns:BlogLibrary="urn:BlogLibrary" xmlns:umbraco.contour="urn:umbraco.contour" xmlns:CWS.Twitter="urn:CWS.Twitter" xmlns:ucomponents.cms="urn:ucomponents.cms" xmlns:ucomponents.dates="urn:ucomponents.dates" xmlns:ucomponents.io="urn:ucomponents.io" xmlns:ucomponents.media="urn:ucomponents.media" xmlns:ucomponents.members="urn:ucomponents.members" xmlns:ucomponents.nodes="urn:ucomponents.nodes" xmlns:ucomponents.search="urn:ucomponents.search" xmlns:ucomponents.strings="urn:ucomponents.strings" xmlns:ucomponents.urls="urn:ucomponents.urls" xmlns:ucomponents.xml="urn:ucomponents.xml" exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets tagsLib BlogLibrary umbraco.contour CWS.Twitter ucomponents.cms ucomponents.dates ucomponents.io ucomponents.media ucomponents.members ucomponents.nodes ucomponents.search ucomponents.strings ucomponents.urls ucomponents.xml "> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:param name="currentPage"/> <xsl:template match="/"> <!-- only output markup if we're at level 2 which has subpages --> <xsl:if test="$currentPage/ancestor-or-self::*[@level=2]/*[@isDoc]"> <div class="glossymenu"> <!-- top level link --> <xsl:variable name="toplevel" select="$currentPage/ancestor-or-self::*[@level=2]"/> <xsl:if test="$toplevel"> <a class="menuitem" href="{umbraco.library:NiceUrl($toplevel/@id)}"><xsl:value-of select="$toplevel/@nodeName" /></a> </xsl:if> <!-- other links and submenu if at level 2 --> <xsl:apply-templates select="$currentPage/ancestor-or-self::*[@level=2]/*[@isDoc]" /> <!--match if we're at the top level (level 0) and we stil want to match for level 1 or 2 --> <xsl:apply-templates select="$currentPage/descendant::*[@level=2]/*[@isDoc]" /> </div> </xsl:if> </xsl:template> <!-- match regardless of level - our normal links --> <xsl:template match="*[@isDoc]"> <xsl:variable name="currentNode" select="."/> <!-- only output anything if there are nodes below the currently matched one --> <xsl:if test="$currentNode/*[@isDoc]"> <a class="menuitem" href="{umbraco.library:NiceUrl(@id)}"> <xsl:value-of select="@nodeName" /> </a> </xsl:if> </xsl:template> <!-- match pages at level 2 - our normal links and submenu if there is one --> <xsl:template match="*[@level=2]/*[@isDoc]"> <xsl:variable name="currentNode" select="."/> <a class="menuitem" href="{umbraco.library:NiceUrl(@id)}"> <!-- output an extra class if there are children below this node --> <xsl:if test="$currentNode/*[@isDoc]"><xsl:attribute name="class">menuitem submenuheader</xsl:attribute></xsl:if> <xsl:value-of select="@nodeName" /> </a> <!-- only output submenu code if there are children below this node --> <xsl:if test="$currentNode/*[@isDoc]"> <div class="submenu"> <ul> <!-- match pages at level 3 --> <xsl:apply-templates select="$currentNode/descendant-or-self::*[@level=3]/*[@isDoc]" /> </ul> </div> </xsl:if> </xsl:template> <!-- match pages at level 3 --> <xsl:template match="*[@level=3]/*[@isDoc]"> <xsl:variable name="currentNode" select="."/> <li> <a href="{umbraco.library:NiceUrl(@id)}"> <xsl:value-of select="@nodeName" /> </a> </li> </xsl:template> <!-- Only output pages that are not hidden --> <xsl:template match="*[umbracoNaviHide = 1]" /> </xsl:stylesheet>
You need to login to post a comment.
