page.xsl 8.9 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 11 12 13 14 15 16
  version="1.0">

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


17
  <xsl:template match="html:ul[@id='toc']" mode="content">
J
Juerg Haefliger 已提交
18 19 20
    <xsl:call-template name="toc"/>
  </xsl:template>

21 22 23 24
  <xsl:template match="html:div[@id='include']" mode="content">
    <xsl:call-template name="include"/>
  </xsl:template>

J
Juerg Haefliger 已提交
25 26
  <xsl:template name="toc">
    <ul>
27
      <xsl:for-each select="/html:html/html:body/html:h2[count(html:a) = 1]">
J
Juerg Haefliger 已提交
28 29
        <xsl:variable name="thish2" select="."/>
        <li>
30
          <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
31
          <xsl:if test="count(./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
32
            <ul>
33
              <xsl:for-each select="./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
34 35
                <xsl:variable name="thish3" select="."/>
                <li>
36
                  <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
37
                  <xsl:if test="count(./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
38
                    <ul>
39
                      <xsl:for-each select="./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
40 41
                        <xsl:variable name="thish4" select="."/>
                        <li>
42
                          <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
43
                          <xsl:if test="count(./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
44
                            <ul>
45
                              <xsl:for-each select="./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
46 47
                                <xsl:variable name="thish5" select="."/>
                                <li>
48
                                  <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
49
                                  <xsl:if test="count(./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]) > 0">
J
Juerg Haefliger 已提交
50
                                    <ul>
51
                                      <xsl:for-each select="./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]">
J
Juerg Haefliger 已提交
52
                                        <li>
53
                                          <a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
J
Juerg Haefliger 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
                                        </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"/>
78
    <xsl:param name="timestamp"/>
79 80
    <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;
</xsl:text>
J
Juerg Haefliger 已提交
81 82 83 84 85
    <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>
86 87 88
      <xsl:comment>
        This page was generated at <xsl:value-of select="$timestamp"/>.
      </xsl:comment>
J
Juerg Haefliger 已提交
89
      <head>
90
        <meta charset="UTF-8"/>
91
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
J
Juerg Haefliger 已提交
92
        <link rel="stylesheet" type="text/css" href="{$href_base}main.css"/>
93 94 95 96 97
        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/>
        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/>
        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/>
        <link rel="manifest" href="/manifest.json"/>
        <meta name="theme-color" content="#ffffff"/>
98
        <title>libvirt: <xsl:value-of select="html:html/html:body/html:h1"/></title>
J
Juerg Haefliger 已提交
99
        <meta name="description" content="libvirt, virtualization, virtualization API"/>
100
        <xsl:apply-templates select="/html:html/html:head/*" mode="content"/>
101 102 103 104 105

        <script type="text/javascript">
          <xsl:comment>
          <![CDATA[
      function init() {
106
          window.addEventListener('scroll', function(e){
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
              var distanceY = window.pageYOffset || document.documentElement.scrollTop,
              shrinkOn = 94
              home = document.getElementById("home");
              links = document.getElementById("jumplinks");
              search = document.getElementById("search");
              body = document.getElementById("body");
              if (distanceY > shrinkOn) {
                  if (home.className != "navhide") {
                      body.className = "navhide"
                      home.className = "navhide"
                      links.className = "navhide"
                      search.className = "navhide"
                  }
              } else {
                  if (home.className == "navhide") {
                      body.className = ""
                      home.className = ""
                      links.className = ""
                      search.className = ""
                  }
              }
128
          });
129 130 131 132 133
      }
      window.onload = init();
           ]]>
          </xsl:comment>
        </script>
J
Juerg Haefliger 已提交
134 135
      </head>
      <body>
136 137 138 139 140
        <xsl:if test="html:html/html:body/@class">
          <xsl:attribute name="class">
            <xsl:value-of select="html:html/html:body/@class"/>
          </xsl:attribute>
        </xsl:if>
J
Juerg Haefliger 已提交
141 142
        <div id="body">
          <div id="content">
143
            <xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
J
Juerg Haefliger 已提交
144 145
          </div>
        </div>
146 147 148 149
        <div id="nav">
          <div id="home">
            <a href="{$href_base}index.html">Home</a>
          </div>
150 151
          <div id="jumplinks">
            <ul>
152 153
              <li><a href="{$href_base}downloads.html">Download</a></li>
              <li><a href="{$href_base}contribute.html">Contribute</a></li>
154
              <li><a href="{$href_base}docs.html">Docs</a></li>
155 156
            </ul>
          </div>
157
          <div id="search">
158 159 160 161
            <form action="https://www.google.com/search" enctype="application/x-www-form-urlencoded" method="get">
              <input name="sitesearch" type="hidden" value="libvirt.org"/>
              <input name="q" type="text" size="12" value=""/>
              <input type="submit" value="Go"/>
162 163 164
            </form>
          </div>
        </div>
D
Daniel P. Berrange 已提交
165 166 167 168
        <div id="footer">
          <div id="contact">
            <h3>Contact</h3>
            <ul>
169 170
              <li><a href="{$href_base}contact.html#email">email</a></li>
              <li><a href="{$href_base}contact.html#irc">irc</a></li>
D
Daniel P. Berrange 已提交
171 172 173 174 175 176 177 178 179 180 181
            </ul>
          </div>
          <div id="community">
            <h3>Community</h3>
            <ul>
              <li><a href="https://twitter.com/hashtag/libvirt">twitter</a></li>
              <li><a href="http://stackoverflow.com/questions/tagged/libvirt">stackoverflow</a></li>
              <li><a href="http://serverfault.com/questions/tagged/libvirt">serverfault</a></li>
            </ul>
          </div>
          <div id="conduct">
182
            Participants in the libvirt project agree to abide by <a href="{$href_base}governance.html#codeofconduct">the project code of conduct</a>
D
Daniel P. Berrange 已提交
183 184 185
          </div>
          <br class="clear"/>
        </div>
J
Juerg Haefliger 已提交
186 187 188 189
      </body>
    </html>
  </xsl:template>

190 191 192 193 194 195 196
  <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>
197 198

  <xsl:template match="html:h2 | html:h3 | html:h4 | html:h5 | html:h6" mode="content">
199
    <xsl:element name="{name()}">
200
      <xsl:apply-templates mode="copy" />
201 202
      <xsl:if test="./html:a/@id">
        <a class="headerlink" href="#{html:a/@id}" title="Permalink to this headline">&#xb6;</a>
203 204 205 206 207 208 209 210 211
      </xsl:if>
    </xsl:element>
  </xsl:template>

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

  <xsl:template match="node()" mode="copy">
212
    <xsl:element name="{name()}">
213 214 215 216
      <xsl:copy-of select="./@*"/>
      <xsl:apply-templates mode="copy" />
    </xsl:element>
  </xsl:template>
J
Juerg Haefliger 已提交
217
</xsl:stylesheet>