view xsls/menu.xsls @ 76:4a4caa566120

Russian documentation import. Changes in module.dtd: <example> now allowed to contain <value> and <emphasis> elements (we need this to show important parts in examples), less strict checking of <directive> syntax (we don't want to fully document some directives, notably deprecated ones). Known issues: 1. <syntax> elements are preserved as is, they will require manual conversion (likely to some not-yet-existed format a la DocBook cmdsynopsis, as currently used one seems to be incomplete); 2. <value> no longer corresponds to replaceable content, and it's use in examples isn't correct; 3. <link doc="document#fragment"> doesn't work with current xslt, either should be supported or changed to <link doc="document" id="fragment">. The following files are intentionally omitted: maillists.xml (support.xml should be used instead), experimental.xml (obsolete), faq.xml (conflicts with existing one, needs discussion). Not yet linked to site.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 11 Oct 2011 12:57:50 +0000
parents 61e04fc01027
children 202e4424cab8
line wrap: on
line source

X:stylesheet {

X:template = "menu/item" {

    <!--
      --  variables are not allowed in a template match predicate,
      --  therefore, we have to use ugly "if"s instead of elegant
      --     "menu/item[@href = $LINK]", etc.
      -->

    X:if "@href = $LINK" {
        X:if "$YEAR and @href='/'" {
            <a href="./"> news </a> <br/>
        } else {
            !{ normalize-space(text()) }<br/>
        }

    } else {
        <a>
        X:attribute "href" {

            X:if "starts-with(@href, $DIRNAME)" {
               X:if "substring-after(@href, $DIRNAME) = ''" {
                  ./

               } else {
                  !{ substring-after(@href, $DIRNAME) }
               }

            } else {
               !{ concat($ROOT, @href) }
            }
        }
        !{ normalize-space(text()) }
        </a>

        X:if "@lang" { X:text { [} !{@lang} X:text {]}}

        <br/>
    }
}


X:template = "menu/item[@year]" {
    X:if "$YEAR or $LINK='/'" {
        X:if "$YEAR=@year" {
            !{@year} <br/>
        } else {
            <a href="{@href}"> !{@year} </a>
            <br/>
        }
    }
}


X:template = "menu/item[starts-with(@href, 'http://')]" {
    <a href="{@href}"> !{ normalize-space(text()) } </a>
    X:if "@lang" { X:text { [} !{@lang} X:text {]}}
    <br/>
}


X:template = "menu/item[not(@href)]" {
    !{ normalize-space(text()) } <br/>
}

}