+++ /dev/null
-<?xml version="1.0"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<!--
-Some callable templates useful when dealing with tab paths. Mostly used in
-tab-to-menu.xsl
--->
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:param name="site-file" select="'cocoon://abs-menulinks'"/>
- <xsl:variable name="site" select="document($site-file)"/>
-<!-- Given the current path and a tabs.xml entry, returns a relative path to
- the specified tab's URL. When rendering a set of tabs, this template will be
- called once per tab.
- -->
- <xsl:template name="calculate-tab-href">
- <xsl:param name="dir_index" select="'index.html'"/>
- <xsl:param name="tab"/>
-<!-- current 'tab' node -->
- <xsl:param name="path" select="$path"/>
- <xsl:if test="starts-with($tab/@href, 'http')">
-<!-- Absolute URL -->
- <xsl:value-of select="$tab/@href"/>
- </xsl:if>
- <xsl:if test="not(starts-with($tab/@href, 'http'))">
-<!-- Root-relative path -->
- <xsl:variable name="backpath">
- <xsl:call-template name="dotdots">
- <xsl:with-param name="path" select="$path"/>
- </xsl:call-template>
-<xsl:text>/</xsl:text>
- <xsl:value-of select="$tab/@dir | $tab/@href"/>
-<!-- If we obviously have a directory, add /index.html -->
- <xsl:if test="$tab/@dir or substring($tab/@href, string-length($tab/@href),
- string-length($tab/@href)) = '/'">
-<xsl:text>/</xsl:text>
- <xsl:if test="$tab/@indexfile">
- <xsl:value-of select="$tab/@indexfile"/>
- </xsl:if>
- <xsl:if test="not(@indexfile)">
- <xsl:value-of select="$dir_index"/>
- </xsl:if>
- </xsl:if>
- </xsl:variable>
- <xsl:value-of
- select="translate(normalize-space(translate($backpath, ' /', '/ ')), ' /', '/ ')"/>
-<!-- Link to backpath, normalizing slashes -->
- </xsl:if>
- </xsl:template>
-<!--
- The id of any tab, whose path is a subset of the current URL. Ie,
- the path of the 'current' tab.
- -->
- <xsl:template name="matching-id" xmlns:l="http://apache.org/forrest/linkmap/1.0">
- <xsl:value-of select="$site//*[starts-with(@href, $path)]/@tab"/>
- </xsl:template>
-<!--
- The longest path of any level 1 tab, whose path is a subset of the current URL. Ie,
- the path of the 'current' tab.
- -->
- <xsl:template name="longest-dir">
- <xsl:param name="tabfile"/>
- <xsl:for-each select="$tabfile/tabs/tab[starts-with($path, @dir|@href)]">
- <xsl:sort select="string-length(@dir|@href)"
- data-type="number" order="descending"/>
- <xsl:if test="position()=1">
- <xsl:value-of select="@dir|@href"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-<!--
- The longest path of any level 2 tab, whose path is a subset of the current URL. Ie,
- the path of the 'current' tab.
- -->
- <xsl:template name="level2-longest-dir">
- <xsl:param name="tabfile"/>
- <xsl:for-each select="$tabfile/tabs/tab/tab[starts-with($path, @dir|@href)]">
- <xsl:sort select="string-length(@dir|@href)"
- data-type="number" order="descending"/>
- <xsl:if test="position()=1">
- <xsl:value-of select="@dir|@href"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-</xsl:stylesheet>