Commit 3d7e2394 authored by Peter Krempa's avatar Peter Krempa

xsl tooling for format*->rst conversion

This patch along with following steps were used to convert
formatdomain.html.in to rst.

The change from h1 to h2 is so that there's one less level of nesting as
pandoc used spaces for underbars of h6. The output also looks better
this way.

The heading is restored by adding an overbar manually.

1) Apply patch to tweak xslt rules

2) cd docs

3) xsltproc --stringparam pagename formatdomain.html --stringparam pagesrc formatdomain.html.in --stringparam timestamp asdf --nonet site.xsl  formatdomain.html.in > ble.xml

4) pandoc --from html --to rst --toc --columns 80 --standalone ble.xml -o formatdomain.rst

5) sed -i -e 's/@/`/g' -e 's/\(.*\)$/`<a id="\1"\/>`/g' -e '/^ \+$/d' formatdomain.rst
(look out for files containing @)

6) Tweak header:

Add:
.. role:: since
.. role:: anchor(raw)
   :format: html

Move and fix ToC specification.

Add overbar on top headline.

7) manually add newline before table overbar (pandoc doesn't do that and
   docutils then don't recognize the table)

8) rm formatdomain.html.in
parent 2f470a4f
......@@ -2,7 +2,7 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<h1>Domain XML format</h1>
<h2>Domain XML format</h2>
<ul id="toc"></ul>
......
......@@ -16,63 +16,10 @@
</xsl:template>
<xsl:template match="html:ul[@id='toc']" mode="content">
<xsl:call-template name="toc"/>
</xsl:template>
<xsl:template match="html:div[@id='include']" mode="content">
<xsl:call-template name="include"/>
</xsl:template>
<xsl:template name="toc">
<ul>
<xsl:for-each select="/html:html/html:body/html:h2[count(html:a) = 1]">
<xsl:variable name="thish2" select="."/>
<li>
<a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
<xsl:if test="count(./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]) > 0">
<ul>
<xsl:for-each select="./following-sibling::html:h3[preceding-sibling::html:h2[1] = $thish2 and count(html:a) = 1]">
<xsl:variable name="thish3" select="."/>
<li>
<a href="#{html:a/@id}"><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">
<ul>
<xsl:for-each select="./following-sibling::html:h4[preceding-sibling::html:h3[1] = $thish3 and count(html:a) = 1]">
<xsl:variable name="thish4" select="."/>
<li>
<a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
<xsl:if test="count(./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]) > 0">
<ul>
<xsl:for-each select="./following-sibling::html:h5[preceding-sibling::html:h4[1] = $thish4 and count(html:a) = 1]">
<xsl:variable name="thish5" select="."/>
<li>
<a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
<xsl:if test="count(./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]) > 0">
<ul>
<xsl:for-each select="./following-sibling::html:h6[preceding-sibling::html:h5[1] = $thish5 and count(html:a) = 1]">
<li>
<a href="#{html:a/@id}"><xsl:value-of select="html:a/text()"/></a>
</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">
......@@ -82,101 +29,13 @@
<xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;
</xsl:text>
<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>
<xsl:comment>
This page was generated at <xsl:value-of select="$timestamp"/>.
</xsl:comment>
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" type="text/css" href="{$href_base}main.css"/>
<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"/>
<title>libvirt: <xsl:value-of select="html:html/html:body//html:h1"/></title>
<meta name="description" content="libvirt, virtualization, virtualization API"/>
<xsl:if test="$pagename = 'libvirt-go.html'">
<meta name="go-import" content="libvirt.org/libvirt-go git https://libvirt.org/git/libvirt-go.git"/>
</xsl:if>
<xsl:if test="$pagename = 'libvirt-go-xml.html'">
<meta name="go-import" content="libvirt.org/libvirt-go-xml git https://libvirt.org/git/libvirt-go-xml.git"/>
</xsl:if>
<xsl:apply-templates select="/html:html/html:head/html:script" mode="content"/>
<script type="text/javascript" src="{$href_base}js/main.js">
<xsl:comment>// forces non-empty element</xsl:comment>
</script>
</head>
<body onload="pageload()">
<body>
<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>
<div id="body">
<div id="content">
<xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
</div>
</div>
<div id="nav">
<div id="home">
<a href="{$href_base}index.html">Home</a>
</div>
<div id="jumplinks">
<ul>
<li><a href="{$href_base}downloads.html">Download</a></li>
<li><a href="{$href_base}contribute.html">Contribute</a></li>
<li><a href="{$href_base}docs.html">Docs</a></li>
</ul>
</div>
<div id="search">
<form id="simplesearch" action="https://www.google.com/search" enctype="application/x-www-form-urlencoded" method="get">
<div>
<input id="searchsite" name="sitesearch" type="hidden" value="libvirt.org"/>
<input id="searchq" name="q" type="text" size="12" value=""/>
<input name="submit" type="submit" value="Go"/>
</div>
</form>
<div id="advancedsearch">
<span><input type="radio" name="what" id="whatwebsite" checked="checked" value="website"/><label for="whatwebsite">Website</label></span>
<span><input type="radio" name="what" id="whatwiki" value="wiki"/><label for="whatwiki">Wiki</label></span>
<span><input type="radio" name="what" id="whatdevs" value="devs"/><label for="whatdevs">Developers list</label></span>
<span><input type="radio" name="what" id="whatusers" value="users"/><label for="whatusers">Users list</label></span>
</div>
</div>
</div>
<div id="footer">
<div id="contact">
<h3>Contact</h3>
<ul>
<li><a href="{$href_base}contact.html#email">email</a></li>
<li><a href="{$href_base}contact.html#irc">irc</a></li>
</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="contribute">
<h3>Contribute</h3>
<ul>
<li><a href="https://gitlab.com/libvirt/libvirt/-/blob/master/docs/{$pagesrc}">edit this page</a></li>
</ul>
</div>
<div id="conduct">
Participants in the libvirt project agree to abide by <a href="{$href_base}governance.html#codeofconduct">the project code of conduct</a>
</div>
<br class="clear"/>
</div>
<xsl:apply-templates select="/html:html/html:body/*" mode="content"/>
</body>
</html>
</xsl:template>
......@@ -190,16 +49,19 @@
</xsl:template>
<xsl:template match="html:h1 | html:h2 | html:h3 | html:h4 | html:h5 | html:h6" mode="content">
<p>:anchor:<xsl:value-of select="html:a/@id"/></p>
<xsl:element name="{name()}">
<xsl:apply-templates mode="copy" />
<xsl:if test="./html:a/@id">
<a class="headerlink" href="#{html:a/@id}" title="Permalink to this headline">&#xb6;</a>
</xsl:if>
<xsl:if test="./html:a[@class='toc-backref']">
<a class="headerlink" href="#{../@id}" title="Permalink to this headline">&#xb6;</a>
</xsl:if>
</xsl:element>
</xsl:template>
</xsl:template>
<xsl:template match="html:span" mode="content">
:since:@<xsl:apply-templates mode="copy"/>@
</xsl:template>
<xsl:template match="html:a[not(@id)]/html:code" mode="content">
<xsl:apply-templates mode="copy"/>
</xsl:template>
<xsl:template match="text()" mode="copy">
<xsl:value-of select="."/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment