forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric BURGHARD <>
Subject [CONTRIB] auto generation of menus
Date Fri, 03 Oct 2003 21:12:04 GMT

I've made some modifications to directory2book.xsl (which generate side menu 
based on directory content):
-little cleanup (expected-extension argument no more needed)
-kind of control on which items are present or not
-allow parametrable sorting of menu-items
-easily extensible.

Example: auto generate menu from several directories (named dir1,dir2, dir3) 
full of document-v20 files. Each document file could have two meta tags
1- <meta name="short-title">short title</meta> 
for the menu if title is too long
2- <meta name="date">20031002</meta>
used for sorting items by date

I use the xpathdirectory generator to extract the meta and title tags. I use 
regexp matcher to factorize the matches.

-- sitemap.xmap snippet

<map:match pattern="(.*)(dir1|dir2|dir3)/book-(.*)" type="regexp">
   <map:generate label="debug" src="content/xdocs/{1}{2}" 
      <map:parameter name="depth" value="2"/>
      <map:parameter name="xpath" value="/document/header/meta | 
   <map:transform src="resources/stylesheets/documentdirectory2book.xsl">
      <map:parameter name="sort-order" value="descending"/>
      <map:parameter name="sort-select" value="dir:xpath/meta[@name='date']"/>
   <map:serialize type="xml"/>


i override the named template "get-label" in documentdirectory2book.xsl which 
inherit from directory2book.xsl

--- documentdirectory2book.xsl snippet

<!-- label is  short-title, title and in last resort filename -->
<xsl:template name="get-label">
   <xsl:param name="corename"/>
      <xsl:when test="dir:xpath/meta[@name='short-title']">
         <xsl:value-of select="dir:xpath/meta[@name='short-title']"/>
      <xsl:when test="dir:xpath/title">
          <xsl:value-of select="dir:xpath/title"/>
          <xsl:value-of select="$corename"/>

1- substring-before-last is defined in a separate xsl file. With this named 
template, expected-extension is no more needed
2- to able to change the select attribute of <xsl:sort/>, i use the dynamic 
extension of exslt <dyn:evaluate> 

Hope it could help someone

View raw message