view xsls/link.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 12f1de4539b4
children 56457a474903
line wrap: on
line source

X:stylesheet {


<!-- {a href="/en/docs/page.xml" /} -->

X:template = "a[starts-with(@href, '/')
                and string() = ''
                and contains(@href, '.xml')]"
{
    <a>
    X:attribute "href" {

        <!--
          --  variables are not allowed in a template match predicate:
          --     a[starts-with(@href, $DIRNAME) ... ]
          --  therefore, we have to test this using "if"
          -->

        X:if "starts-with(@href, $DIRNAME)" {

           <!-- convert to a link "docs/page.html" -->

           !{ substring-after(document(concat($XML, @href))/article/@link
                              |document(concat($XML, @href))/module/@link,
                              $DIRNAME) }
        } else {

           <!-- convert to a link "../../../en/docs/page.html" -->

           !{ concat($ROOT, document(concat($XML, @href))/article/@link
                            |document(concat($XML, @href))/module/@link) }
        }
    }
    !{  document(concat($XML, @href))/article/@title
       |document(concat($XML, @href))/article/@name
       |document(concat($XML, @href))/module/@title
       |document(concat($XML, @href))/module/@name }
    </a>
}


<!-- {a href="/en/docs/page.xml"} TEXT {/a} -->

X:template = "a[starts-with(@href, '/')
                and string()
                and contains(@href, '.xml')]"
{
    <a>
    X:attribute "href" {
        X:if "starts-with(@href, $DIRNAME)" {
           !{ substring-after(document(concat($XML, @href))/article/@link
                              |document(concat($XML, @href))/module/@link,
                              $DIRNAME) }
        } else {
           !{ concat($ROOT, document(concat($XML, @href))/article/@link
                            |document(concat($XML, @href))/module/@link) }
        }
    }
    !!;
    </a>
}

X:template = "a" { <a href="{@href}"> !!; </a> }

X:template = "img" { <img src="{@href}"> !!; </img> }

X:template = "link[@url]" { <a href="{@url}"> !!; </a> }

X:template = "link[@id and not(@doc)]" { <a href="#{@id}"> !!; </a> }

X:template = "link[@doc and not(@id)]" {
    <a href="{substring-before(@doc, '.xml')}.html"> !!; </a>
}

X:template = "link[@id and @doc]" {
    <a href="{substring-before(@doc, '.xml')}.html#{@id}"> !!; </a>
}

}