page.xsl 7.7 KB
Newer Older
J
Juerg Haefliger 已提交
1 2
<?xml version="1.0"?>
<xsl:stylesheet
3 4
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:html="http://www.w3.org/1999/xhtml"
J
Juerg Haefliger 已提交
5 6
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exsl="http://exslt.org/common"
7
  exclude-result-prefixes="xsl exsl html"
J
Juerg Haefliger 已提交
8 9 10
  version="1.0">

  <!-- The sitemap.html.in page contains the master navigation structure -->
11
  <xsl:variable name="sitemap" select="document('sitemap.html.in')/html:html/html:body/html:div[@id='sitemap']"/>
J
Juerg Haefliger 已提交
12

13
  <xsl:template match="html:code[@class='docref']" mode="content">
J
Juerg Haefliger 已提交
14 15 16 17 18 19 20 21 22 23 24
    <xsl:variable name="name"><xsl:value-of select="."/></xsl:variable>
    <a href="html/libvirt-libvirt.html#{$name}"><code><xsl:value-of select="$name"/></code></a>
  </xsl:template>

  <xsl:template match="node() | @*" mode="content">
    <xsl:copy>
      <xsl:apply-templates select="node() | @*" mode="content"/>
    </xsl:copy>
  </xsl:template>


25
  <xsl:template match="html:ul[@id='toc']" mode="content">
J
Juerg Haefliger 已提交
26 27 28 29 30
    <xsl:call-template name="toc"/>
  </xsl:template>

  <!-- This processes the sitemap to form a context sensitive
       navigation menu for the current page -->
31
  <xsl:template match="html:ul" mode="menu">
J
Juerg Haefliger 已提交
32 33 34
    <xsl:param name="pagename"/>
    <xsl:param name="level"/>
    <ul class="{concat('l', $level)}">
35
      <xsl:for-each select="html:li">
J
Juerg Haefliger 已提交
36 37 38 39 40 41 42
        <!-- The extra div tag here works around an IE6 whitespace collapsing problem -->
        <li><div>
          <!-- A menu is active if there is an 'a' tag with
               a href matching this pagename at this level
               or a child menu -->
          <xsl:variable name="class">
            <xsl:choose>
43
              <xsl:when test="count(.//html:a[@href = $pagename]) > 0">
J
Juerg Haefliger 已提交
44 45 46 47 48 49 50 51 52 53 54 55
                <xsl:text>active</xsl:text>
              </xsl:when>
              <xsl:otherwise>
                <xsl:text>inactive</xsl:text>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:variable>

          <!-- A menu should use a 'span' instead of 'a' if
               the immediate 'a' tag has href matching the
               current pagename -->
          <xsl:choose>
56 57
            <xsl:when test="$pagename = html:a/@href">
              <span class="{$class}"><xsl:value-of select="html:a"/></span>
J
Juerg Haefliger 已提交
58
            </xsl:when>
59 60
            <xsl:when test="starts-with(html:a/@href, 'http://wiki.libvirt.org')">
              <a title="{./html:span}" class="{$class}" href="{html:a/@href}"><xsl:value-of select="html:a"/></a>
J
Juerg Haefliger 已提交
61 62
            </xsl:when>
            <xsl:otherwise>
63
              <a title="{./html:span}" class="{$class}" href="{concat($href_base, html:a/@href)}"><xsl:value-of select="html:a"/></a>
J
Juerg Haefliger 已提交
64 65 66 67 68
            </xsl:otherwise>
          </xsl:choose>

          <!-- A sub-menu should only be expanded it contains
               an 'a' tag with href matching this pagename -->
69 70
          <xsl:if test="count(.//html:a[@href = $pagename]) > 0">
            <xsl:apply-templates select="html:ul" mode="menu">
J
Juerg Haefliger 已提交
71 72 73 74 75 76 77 78 79 80 81
              <xsl:with-param name="pagename" select="$pagename"/>
              <xsl:with-param name="level" select="$level + 1"/>
            </xsl:apply-templates>
          </xsl:if>
        </div></li>
      </xsl:for-each>
    </ul>
  </xsl:template>

  <xsl:template name="toc">
    <ul>
82
      <xsl:for-each select="/html:html/html:body/html:h2[count(html:a) = 1]">
J
Juerg Haefliger 已提交
83 84
        <xsl:variable name="thish2" select="."/>
        <li>
85 86
          <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
          <xsl:if test="count(./following-sibling::h3[preceding-sibling::h2[1] = $thish2 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
87
            <ul>
88
              <xsl:for-each select="./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
89 90
                <xsl:variable name="thish3" select="."/>
                <li>
91 92
                  <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
                  <xsl:if test="count(./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
93
                    <ul>
94
                      <xsl:for-each select="./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
95 96
                        <xsl:variable name="thish4" select="."/>
                        <li>
97 98
                          <a href="#{html:a/@name}"><xsl:value-of select="a/text()"/></a>
                          <xsl:if test="count(./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
99
                            <ul>
100
                              <xsl:for-each select="./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
101 102
                                <xsl:variable name="thish5" select="."/>
                                <li>
103 104
                                  <a href="#{html:a/@name}"><xsl:value-of select="a/text()"/></a>
                                  <xsl:if test="count(./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
105
                                    <ul>
106
                                      <xsl:for-each select="./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
107
                                        <li>
108
                                          <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
J
Juerg Haefliger 已提交
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
                                        </li>
                                      </xsl:for-each>
                                    </ul>
                                  </xsl:if>
                                </li>
                              </xsl:for-each>
                            </ul>
                          </xsl:if>
                        </li>
                      </xsl:for-each>
                    </ul>
                  </xsl:if>
                </li>
              </xsl:for-each>
            </ul>
          </xsl:if>
        </li>
      </xsl:for-each>
    </ul>
  </xsl:template>

  <!-- This is the master page structure -->
  <xsl:template match="/" mode="page">
    <xsl:param name="pagename"/>
    <html>
      <xsl:comment>
        This file is autogenerated from <xsl:value-of select="$pagename"/>.in
        Do not edit this file. Changes will be lost.
      </xsl:comment>
      <head>
        <link rel="stylesheet" type="text/css" href="{$href_base}main.css"/>
        <link rel="SHORTCUT ICON" href="{$href_base}32favicon.png"/>
141
        <title>libvirt: <xsl:value-of select="html:html/html:body/html:h1"/></title>
J
Juerg Haefliger 已提交
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
        <meta name="description" content="libvirt, virtualization, virtualization API"/>
      </head>
      <body>
        <div id="header">
          <div id="headerLogo"/>
          <div id="headerSearch">
            <form action="{$href_base}search.php" enctype="application/x-www-form-urlencoded" method="get">
              <div>
                <input id="query" name="query" type="text" size="12" value=""/>
                <input id="submit" name="submit" type="submit" value="Search"/>
              </div>
            </form>
          </div>
        </div>
        <div id="body">
          <div id="menu">
158
            <xsl:apply-templates select="exsl:node-set($sitemap)/html:ul" mode="menu">
J
Juerg Haefliger 已提交
159 160 161 162 163
              <xsl:with-param name="pagename" select="$pagename"/>
              <xsl:with-param name="level" select="0"/>
            </xsl:apply-templates>
          </div>
          <div id="content">
164
            <xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
J
Juerg Haefliger 已提交
165 166 167 168 169 170 171 172 173 174 175 176 177
          </div>
        </div>
        <div id="footer">
          <p id="sponsor">
	    Sponsored by:<br/>
            <a href="http://et.redhat.com/"><img src="{$href_base}et.png" alt="Project sponsored by Red Hat Emerging Technology"/></a>
          </p>
        </div>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>