summaryrefslogtreecommitdiff
path: root/docs/html-to-website-xml.xsl
blob: 88aa2e78f76e19297174b8cda3e0ce409a1764c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:doc="http://www.rabbitmq.com/namespaces/ad-hoc/doc"
                xmlns="http://www.w3.org/1999/xhtml"
                version='1.0'>

<xsl:param name="original"/>

<xsl:output method="xml" />

<xsl:template match="*"/>

<!-- Copy every element through -->
<xsl:template match="*">
  <xsl:element name="{name()}" namespace="http://www.w3.org/1999/xhtml">
    <xsl:apply-templates select="@*|node()"/>
  </xsl:element>
</xsl:template>

<xsl:template match="@*">
  <xsl:copy/>
</xsl:template>
  
<!-- Copy the root node, and munge the outer part of the page -->
<xsl:template match="/html">
<xsl:processing-instruction name="xml-stylesheet">type="text/xml" href="page.xsl"</xsl:processing-instruction>
<html xmlns:doc="http://www.rabbitmq.com/namespaces/ad-hoc/doc" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title><xsl:value-of select="document($original)/refentry/refnamediv/refname"/><xsl:if test="document($original)/refentry/refmeta/manvolnum">(<xsl:value-of select="document($original)/refentry/refmeta/manvolnum"/>)</xsl:if> manual page</title>
  </head>
  <body>
    <doc:div>
      <xsl:choose>
      <xsl:when test="document($original)/refentry/refmeta/manvolnum">
      <p>
        This is the manual page for
        <code><xsl:value-of select="document($original)/refentry/refnamediv/refname"/>(<xsl:value-of select="document($original)/refentry/refmeta/manvolnum"/>)</code>.
      </p>
      <p>
        <a href="../manpages.html">See a list of all manual pages</a>.
      </p>
      </xsl:when>
      <xsl:otherwise>
      <p>
        This is the documentation for
        <code><xsl:value-of select="document($original)/refentry/refnamediv/refname"/></code>.
      </p>
      </xsl:otherwise>
      </xsl:choose>
      <p>
         For more general documentation, please see the
        <a href="../admin-guide.html">administrator's guide</a>.
      </p>

      <doc:toc class="compact">
        <doc:heading>Table of Contents</doc:heading>
      </doc:toc>

      <xsl:apply-templates select="body/div[@class='refentry']"/>
    </doc:div>
  </body>
</html>
</xsl:template>

<!-- Specific instructions to revert the DocBook HTML to be more like our ad-hoc XML schema -->

<xsl:template match="div[@class='refsect1'] | div[@class='refnamediv'] | div[@class='refsynopsisdiv']">
  <doc:section name="{h2}">
    <xsl:apply-templates select="node()"/>
  </doc:section>
</xsl:template>

<xsl:template match="div[@class='refsect2']">
  <doc:subsection name="{h3}">
    <xsl:apply-templates select="node()"/>
  </doc:subsection>
</xsl:template>

<xsl:template match="h2 | h3">
  <doc:heading>
    <xsl:apply-templates select="node()"/>
  </doc:heading>
</xsl:template>

<xsl:template match="pre[@class='screen']">
  <pre class="sourcecode">
    <xsl:apply-templates select="node()"/>
  </pre>
</xsl:template>

<xsl:template match="div[@class='cmdsynopsis']">
  <div class="cmdsynopsis" id="{p/code[@class='command']}">
    <xsl:apply-templates select="node()"/>
  </div>
</xsl:template>

</xsl:stylesheet>