Build Menus Panel Transforms

This script build the panel that contains the menus at the head of each page.

buildHeader.rxsl
// -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // // Page to XHTML Transform: Build Menu Panel // // Author: // Name : Hugh Field-Richards // Email : hsfr@hsfr.org.uk // // Copyright 2025 Hugh Field-Richards. // // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* stylesheet { version "1.0" xmlns "list" "http://www.hsfr.org.uk/Schema/List" xmlns "link" "http://www.hsfr.org.uk/Schema/Link" // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // // Create panel within which the menu sits. proc buildMenusPanel.menusPanel { element "div" { attribute "id" "menu" element "nav" { apply-templates using "//menus//list:list[@id = 'nav-menu']" scope "menus" } } } // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // // Top level menu items. match using "//menus//list:list[@id = 'nav-menu']" scope "menus" { element "ul" { attribute "class" "dropdown" apply-templates scope "topMenus" } } match using "list:item" scope "topMenus" { element "li" { apply-templates scope "topMenuItem" } } match using "link:link" scope "topMenuItem" { element "a" { attribute "href" { value "@ref" } attribute "class" "hide" value "." } } // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // // Sub-menu items. match using "list:list" scope "topMenuItem" { element "ul" { attribute "class" "subMenuType" apply-templates scope "subMenus" } } match using "list:item" scope "subMenus" { element "li" { apply-templates scope "subMenusItem" } } match using "link:link" scope "subMenusItem" { element "a" { attribute "href" { value "@ref" } value "." } } // -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* // // Sub-sub-menu items. match using "list:list" scope "subMenusItem" { element "ul" { attribute "class" "subsubMenuType" apply-templates scope "subsubMenus" } } match using "list:item" scope "subsubMenus" { element "li" { apply-templates scope "subsubMenusItem" } } match using "link:link" scope "subsubMenusItem" { element "a" { attribute "href" { value "@ref" } value "." } } }
Copyright 2025 Hugh Field-Richards. All Rights Reserved.