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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--