[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] XSL Navigation Choose Test
Subject: [xsl] XSL Navigation Choose Test From: "Voltmer, Steve T" <voltmer1@xxxxxxxxxxxxxxx> Date: Mon, 27 Aug 2012 21:01:01 +0000 |
I have a navigation set up and using a "choose statement" I added a href's to all nodes except those where the parent nodes have children, in which case the parent of the child nodes gets the generic "[CDATA[ javascript://]]" added to it which of course goes no where. Problem is, as my unordered list navigation gets deeper I would like the parents of the nodes with children to have a link on them as well. How could I apply the correct choose statement to only the root nodes of my navigation? Here is a link to my page: https://edit-www.rose-hulman.edu/offices-services/alumni-affairs-2.aspx Thanks! Here is the xslt : <?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" exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets "> <xsl:output method="xml" omit-xml-declaration="yes"/> <xsl:param name="currentPage"/> <xsl:template match="/"> <xsl:variable name="home" select="$currentPage/ancestor-or-self::Category2HomePage" /> <xsl:variable name="nav" select="$home/*[@isDoc and string(umbracoNaviHide)!='1']" /> <ul> <xsl:if test="string($home/useAlternateNavigation) = '1'"> <xsl:attribute name="class">alt-nav</xsl:attribute> </xsl:if> <xsl:for-each select="$nav"> <li> <!-- this craziness allows IE to lay subnavs on top of top nav elements if they break onto two lines --> <xsl:attribute name="style">z-index:<xsl:value-of select="count($nav)-position()+1" />;</xsl:attribute> <xsl:attribute name="class"> <xsl:if test="$currentPage/ancestor-or-self::*[@isDoc and name()!='Category2HomePage' and @id=current()/@id]"> <xsl:text>active</xsl:text> </xsl:if> <xsl:text> </xsl:text> <xsl:if test="count($nav)=position()"> <xsl:text>last</xsl:text> </xsl:if> </xsl:attribute> <xsl:call-template name="node-link-with-span"> <xsl:with-param name="node" select="current()" /> </xsl:call-template> <xsl:variable name="subnodes" select="* [@isDoc and string(umbracoNaviHide)!='1']" /> <xsl:if test="$subnodes"> <ul> <xsl:for-each select="$subnodes"> <li> <xsl:if test="position()=1"> <xsl:attribute name="class">first</xsl:attribute> </xsl:if> <xsl:call-template name="node-link-with-span"> <xsl:with-param name="node" select="current()" /> </xsl:call-template> </li> </xsl:for-each> </ul> </xsl:if> </li> </xsl:for-each> </ul> <xsl:if test="string($home/useAlternateNavigation) != '1'"> <img src="/static/phase2/tabNavBorderBottom.jpg" class="tabBorder" /> </xsl:if> </xsl:template> <xsl:template name="node-link-with-span"> <xsl:param name="node" /> <xsl:if test="string($node) != ''"> <a> <xsl:attribute name="href"> <xsl:choose> <xsl:when test="count($node/* [@isDoc and string(umbracoNaviHide) != '1'])"> <![CDATA[javascript://]]> </xsl:when> <xsl:when test="$node[name() = 'ExternalLink']"> <xsl:value-of select="$node/url" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="umbraco.library:NiceUrl($node/@id)" /> </xsl:otherwise> </xsl:choose> </xsl:attribute> <span> <xsl:call-template name="node-name"> <xsl:with-param name="node" select="$node" /> </xsl:call-template> </span> </a> </xsl:if> </xsl:template> <!-- A template to output the correct name for a given node. Better than copy/pasting this code all over the place --> <xsl:template name="node-name"> <xsl:param name="node" /> <xsl:if test="string($node) != ''"> <xsl:choose> <xsl:when test="$node/pageTitle != ''"> <xsl:value-of select="$node/pageTitle"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$node/@nodeName"/> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> </xsl:stylesheet> Steve Voltmer Web Assistant Marketing and Communications PHONE: 812-877-8644 FAX: 812-877-8362 Room 121 5500 WABASH AVENUE TERRE HAUTE, IN 47803-3920 www.rose-hulman.edu Steve Voltmer Web Assistant Marketing and Communications PHONE: 812-877-8644 FAX: 812-877-8362 Room 121 5500 WABASH AVENUE TERRE HAUTE, IN 47803-3920 www.rose-hulman.edu
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] RE: How to give an attribute , Costello, Roger L. | Thread | [xsl] A way to test only top level , Voltmer, Steve T |
Re: [xsl] How to give an attribute , Imsieke, Gerrit, le- | Date | Re: [xsl] How to give an attribute , G. Ken Holman |
Month |
Keywords