page.xsl 8.8 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
    <xsl:call-template name="toc"/>
  </xsl:template>

29 30 31 32
  <xsl:template match="html:div[@id='include']" mode="content">
    <xsl:call-template name="include"/>
  </xsl:template>

J
Juerg Haefliger 已提交
33 34
  <!-- This processes the sitemap to form a context sensitive
       navigation menu for the current page -->
35
  <xsl:template match="html:ul" mode="menu">
J
Juerg Haefliger 已提交
36 37 38
    <xsl:param name="pagename"/>
    <xsl:param name="level"/>
    <ul class="{concat('l', $level)}">
39
      <xsl:for-each select="html:li">
J
Juerg Haefliger 已提交
40 41 42 43 44 45 46
        <!-- 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>
47
              <xsl:when test="count(.//html:a[@href = $pagename]) > 0">
J
Juerg Haefliger 已提交
48 49 50 51 52 53 54 55 56 57 58 59
                <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>
60 61
            <xsl:when test="$pagename = html:a/@href">
              <span class="{$class}"><xsl:value-of select="html:a"/></span>
J
Juerg Haefliger 已提交
62
            </xsl:when>
63 64
            <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 已提交
65 66
            </xsl:when>
            <xsl:otherwise>
67
              <a title="{./html:span}" class="{$class}" href="{concat($href_base, html:a/@href)}"><xsl:value-of select="html:a"/></a>
J
Juerg Haefliger 已提交
68 69 70 71 72
            </xsl:otherwise>
          </xsl:choose>

          <!-- A sub-menu should only be expanded it contains
               an 'a' tag with href matching this pagename -->
73 74
          <xsl:if test="count(.//html:a[@href = $pagename]) > 0">
            <xsl:apply-templates select="html:ul" mode="menu">
J
Juerg Haefliger 已提交
75 76 77 78 79 80 81 82 83 84 85
              <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>
86
      <xsl:for-each select="/html:html/html:body/html:h2[count(html:a) = 1]">
J
Juerg Haefliger 已提交
87 88
        <xsl:variable name="thish2" select="."/>
        <li>
89
          <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
90
          <xsl:if test="count(./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
91
            <ul>
92
              <xsl:for-each select="./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
93 94
                <xsl:variable name="thish3" select="."/>
                <li>
95 96
                  <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 已提交
97
                    <ul>
98
                      <xsl:for-each select="./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
99 100
                        <xsl:variable name="thish4" select="."/>
                        <li>
101
                          <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
102
                          <xsl:if test="count(./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
103
                            <ul>
104
                              <xsl:for-each select="./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
105 106
                                <xsl:variable name="thish5" select="."/>
                                <li>
107
                                  <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
108
                                  <xsl:if test="count(./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
109
                                    <ul>
110
                                      <xsl:for-each select="./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
111
                                        <li>
112
                                          <a href="#{html:a/@name}"><xsl:value-of select="html:a/text()"/></a>
J
Juerg Haefliger 已提交
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 141 142 143 144
                                        </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"/>
145
        <title>libvirt: <xsl:value-of select="html:html/html:body/html:h1"/></title>
J
Juerg Haefliger 已提交
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
        <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">
162
            <xsl:apply-templates select="exsl:node-set($sitemap)/html:ul" mode="menu">
J
Juerg Haefliger 已提交
163 164 165 166 167
              <xsl:with-param name="pagename" select="$pagename"/>
              <xsl:with-param name="level" select="0"/>
            </xsl:apply-templates>
          </div>
          <div id="content">
168
            <xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
J
Juerg Haefliger 已提交
169 170 171 172 173 174 175 176 177 178 179 180
          </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>

181 182 183 184 185 186 187
  <xsl:template name="include">
    <xsl:variable name="inchtml">
      <xsl:copy-of select="document(@filename)"/>
    </xsl:variable>

    <xsl:apply-templates select="exsl:node-set($inchtml)/html:html/html:body/*" mode="content"/>
  </xsl:template>
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207

  <xsl:template match="html:h2 | html:h3 | html:h4 | html:h5 | html:h6" mode="content">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:apply-templates mode="copy" />
      <xsl:if test="./html:a/@name">
        <a class="headerlink" href="#{html:a/@name}" title="Permalink to this headline">&#xb6;</a>
      </xsl:if>
    </xsl:element>
  </xsl:template>

  <xsl:template match="text()" mode="copy">
    <xsl:value-of select="."/>
  </xsl:template>

  <xsl:template match="node()" mode="copy">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:copy-of select="./@*"/>
      <xsl:apply-templates mode="copy" />
    </xsl:element>
  </xsl:template>
J
Juerg Haefliger 已提交
208
</xsl:stylesheet>