cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Koberg" <>
Subject RE: Common practice: how to keep links to html-trees consistent
Date Mon, 19 Aug 2002 22:26:21 GMT

This is relatively easy to do with XSL.

You can mirror your site structure in XML (produced dynamically or
manually).  Say it turns out to be something like:

<folder id="f123" name="aaa" label="blah1">
  <page id="p123" label="blah2"/>
  <folder id="f234" name="bbb" label="blah3">
    <page id="p234" label="blah4"/>
    <page id="p235" label="blah5"/>

I transform against this XML to get my context in the site (I use more
attributes but this gives you the idea - if you like I can post an example
site with XSL and XML). Once I have this I can create all my paths based on
the relative location of the page.  So I might have this defined at the top

<xsl:key name="site_config_key" match="page | folder" use="@id"/>
<xsl:variable name="folder_nodeset" select="key('site_config_key',
<xsl:variable name="page_nodeset" select="key('site_config_key',
<xsl:variable name="relative_path_to_root">
    <xsl:when test="not($root_relative='true')">
      <xsl:apply-templates select="$folder_nodeset"
<xsl:template match="folder" mode="rel_path_builder">
  <xsl:apply-templates select="parent::folder" mode="rel_path_builder"/>

Then wherever I have a link, whether it is a tab, nav item, snail trail,
pager, etc I can call a template from a page's context. For example:

<xsl:template match="page" mode="nav">
  <xsl:variable name="href">
    <xsl:call-template name="page_path_builder"/>
  <div class="nav">
    <a href="{$href}">
      <xsl:value-of select="@label"/>
<xsl:template name="page_path_builder">
  <xsl:value-of select="$relative_path_to_root"/>
  <xsl:for-each select="ancestor::folder">
    <xsl:value-of select="@name"/>
  <xsl:value-of select="@id"/>
  <xsl:value-of select="@file_ext"/>


-----Original Message-----
From: Koen Pellegrims []
Sent: Monday, August 19, 2002 1:43 PM
To: Cocoon-Users@Xml. Apache. Org
Subject: Common practice: how to keep links to html-trees consistent


This is something that most of you *must* have come across at one point or
another, and I am just looking for the best solution (I know it is not
really a Cocoon-question, but Cocoon might provide some nice and elegant
solution for this...)

Menu on my site that contains a link to the index-page (index.html)  and
links to (among others) a product-page. In the page-hierarchy, the
product-pages are contained within a 'products' directory.


The problem arises when I display this menu on a product page, because the
browser (rightly so) interprets 'index.html' as being relative to the

So, whereas the link to 'index.html' is correct from the index-page, it
refers to 'products/index.html' on any product page. (and even worse: a link
to productA suddenly becomes a link to products/products/productsA.html)

My question is simple: did any of you encounter this problem? And -of
course- how did you solve it?


Please check that your question  has not already been answered in the
FAQ before posting.     <>

To unsubscribe, e-mail:     <>
For additional commands, e-mail:   <>

View raw message