VirtualBox

source: vbox/trunk/doc/manual/docbook-refentry-to-manual-sect1.xsl@ 93483

Last change on this file since 93483 was 91203, checked in by vboxsync, 3 years ago

docbook-refentry-to-manual-sect1.xsl: Preserve section ID attributes, for use in xref.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.6 KB
Line 
1<?xml version="1.0"?>
2<!--
3 docbook-refentry-to-manual-sect1.xsl:
4 XSLT stylesheet for transforming a refentry (manpage)
5 to a sect1 for the user manual.
6
7 Copyright (C) 2006-2020 Oracle Corporation
8
9 This file is part of VirtualBox Open Source Edition (OSE), as
10 available from http://www.virtualbox.org. This file is free software;
11 you can redistribute it and/or modify it under the terms of the GNU
12 General Public License (GPL) as published by the Free Software
13 Foundation, in version 2 as it comes in the "COPYING" file of the
14 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16-->
17
18<xsl:stylesheet
19 version="1.0"
20 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
21 xmlns:str="http://xsltsl.org/string"
22 >
23
24 <xsl:import href="string.xsl"/>
25
26 <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
27 <xsl:strip-space elements="*"/>
28
29
30<!-- - - - - - - - - - - - - - - - - - - - - - -
31 global XSLT variables
32 - - - - - - - - - - - - - - - - - - - - - - -->
33
34
35
36<!-- - - - - - - - - - - - - - - - - - - - - - -
37 base operation is to copy.
38 - - - - - - - - - - - - - - - - - - - - - - -->
39
40<xsl:template match="node()|@*">
41 <xsl:copy>
42 <xsl:apply-templates select="node()|@*"/>
43 </xsl:copy>
44</xsl:template>
45
46
47<!-- - - - - - - - - - - - - - - - - - - - - - -
48
49 - - - - - - - - - - - - - - - - - - - - - - -->
50
51<!-- rename refentry to sect1 -->
52<xsl:template match="refentry">
53 <xsl:element name="sect1">
54 <xsl:attribute name="condition">refentry</xsl:attribute>
55 <xsl:apply-templates select="node()|@*"/>
56 </xsl:element>
57</xsl:template>
58
59<!-- Remove refentryinfo, keeping the title element. -->
60<xsl:template match="refentryinfo">
61 <xsl:if test="./title">
62 <xsl:copy-of select="./title"/>
63 </xsl:if>
64</xsl:template>
65
66<!-- Morph refnamediv into a brief description. -->
67<xsl:template match="refnamediv">
68 <xsl:element name="para">
69 <xsl:call-template name="capitalize">
70 <xsl:with-param name="text" select="normalize-space(./refpurpose)"/>
71 </xsl:call-template>
72 <xsl:text>.</xsl:text>
73 </xsl:element>
74</xsl:template>
75
76<!-- Morph the refsynopsisdiv part into a synopsis section. -->
77<xsl:template match="refsynopsisdiv">
78 <xsl:if test="name(*[1]) != 'cmdsynopsis'"><xsl:message terminate="yes">Expected refsynopsisdiv to start with cmdsynopsis</xsl:message></xsl:if>
79 <xsl:if test="title"><xsl:message terminate="yes">No title element supported in refsynopsisdiv</xsl:message></xsl:if>
80
81 <xsl:element name="sect2">
82 <xsl:attribute name="role">not-in-toc</xsl:attribute>
83 <xsl:attribute name="condition">refsynopsisdiv</xsl:attribute>
84 <xsl:element name="title">
85 <xsl:text>Synopsis</xsl:text>
86 </xsl:element>
87 <xsl:apply-templates />
88 </xsl:element>
89
90</xsl:template>
91
92<!-- refsect1 -> sect2 -->
93<xsl:template match="refsect1">
94 <xsl:if test="not(title)"><xsl:message terminate="yes">refsect1 requires title</xsl:message></xsl:if>
95 <xsl:element name="sect2">
96 <xsl:attribute name="role">not-in-toc</xsl:attribute>
97 <xsl:attribute name="condition">refsect1</xsl:attribute>
98 <xsl:if test="@id">
99 <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
100 </xsl:if>
101 <xsl:apply-templates />
102 </xsl:element>
103</xsl:template>
104
105<!-- refsect2 -> sect3 -->
106<xsl:template match="refsect2">
107 <xsl:if test="not(title)"><xsl:message terminate="yes">refsect2 requires title</xsl:message></xsl:if>
108 <xsl:element name="sect3">
109 <xsl:attribute name="role">not-in-toc</xsl:attribute>
110 <xsl:attribute name="condition">refsect2</xsl:attribute>
111 <xsl:if test="@id">
112 <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
113 </xsl:if>
114 <xsl:apply-templates />
115 </xsl:element>
116</xsl:template>
117
118<!-- refsect3 -> sect4 -->
119<xsl:template match="refsect3">
120 <xsl:if test="not(title)"><xsl:message terminate="yes">refsect3 requires title</xsl:message></xsl:if>
121 <xsl:element name="sect4">
122 <xsl:attribute name="role">not-in-toc</xsl:attribute>
123 <xsl:attribute name="condition">refsect3</xsl:attribute>
124 <xsl:if test="@id">
125 <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
126 </xsl:if>
127 <xsl:apply-templates />
128 </xsl:element>
129</xsl:template>
130
131
132<!-- Remove refmeta. -->
133<xsl:template match="refmeta"/>
134
135<!--
136 remark extensions:
137 -->
138<!-- Default: remove all remarks. -->
139<xsl:template match="remark"/>
140
141<!-- help-manual - stuff that should only be included in the manual. -->
142<xsl:template match="remark[@role = 'help-manual']">
143 <xsl:apply-templates/>
144</xsl:template>
145
146<!-- help-copy-synopsis - used in refsect2 to copy synopsis from the refsynopsisdiv. -->
147<xsl:template match="remark[@role = 'help-copy-synopsis']">
148 <xsl:if test="not(parent::refsect2)">
149 <xsl:message terminate="yes">The help-copy-synopsis remark is only applicable in refsect2.</xsl:message>
150 </xsl:if>
151 <xsl:variable name="sSrcId" select="concat('synopsis-',../@id)"/>
152 <xsl:if test="not(/refentry/refsynopsisdiv/cmdsynopsis[@id = $sSrcId])">
153 <xsl:message terminate="yes">Could not find any cmdsynopsis with id=<xsl:value-of select="$sSrcId"/> in refsynopsisdiv.</xsl:message>
154 </xsl:if>
155 <xsl:element name="cmdsynopsis">
156 <xsl:copy-of select="/refentry/refsynopsisdiv/cmdsynopsis[@id = $sSrcId]/node()"/>
157 </xsl:element>
158</xsl:template>
159
160<!--
161 Captializes the given text.
162 -->
163<xsl:template name="capitalize">
164 <xsl:param name="text"/>
165 <xsl:call-template name="str:to-upper">
166 <xsl:with-param name="text" select="substring($text,1,1)"/>
167 </xsl:call-template>
168 <xsl:value-of select="substring($text,2)"/>
169</xsl:template>
170
171</xsl:stylesheet>
172
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette