summaryrefslogtreecommitdiff
path: root/doc/xslt/to_docbook.xslt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/xslt/to_docbook.xslt')
-rw-r--r--doc/xslt/to_docbook.xslt102
1 files changed, 102 insertions, 0 deletions
diff --git a/doc/xslt/to_docbook.xslt b/doc/xslt/to_docbook.xslt
new file mode 100644
index 0000000..0b39c28
--- /dev/null
+++ b/doc/xslt/to_docbook.xslt
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Changing element names from SCons XSD to real Docbook.
+-->
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format"
+ xmlns:scons="http://www.scons.org/dbxsd/v1.0">
+ <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
+
+ <!-- Copy everything unmatched -->
+ <xsl:template match="*">
+ <xsl:element name="{local-name()}">
+ <xsl:copy-of select="@*"/>
+ <xsl:apply-templates select="node()"/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="text() | comment() | processing-instruction()">
+ <xsl:copy/>
+ </xsl:template>
+
+ <!-- Helper function for replacing strings in strings -->
+ <xsl:template name="string-replace-all">
+ <xsl:param name="text" />
+ <xsl:param name="replace" />
+ <xsl:param name="by" />
+ <xsl:choose>
+ <xsl:when test="contains($text, $replace)">
+ <xsl:value-of select="substring-before($text,$replace)" />
+ <xsl:value-of select="$by" />
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text"
+ select="substring-after($text,$replace)" />
+ <xsl:with-param name="replace" select="$replace" />
+ <xsl:with-param name="by" select="$by" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Leaving scons_example empty -->
+ <xsl:template match="scons:scons_example">
+ <xsl:apply-templates select="node()"/>
+ </xsl:template>
+
+ <!-- Changing example_commands to screen -->
+ <xsl:template match="scons:example_commands">
+ <xsl:element name="screen">
+ <xsl:apply-templates select="node()"/>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Leaving scons_output empty, should already
+ have been handled by xinclude_examples.xslt -->
+ <xsl:template match="scons:scons_output">
+ <xsl:apply-templates select="node()"/>
+ </xsl:template>
+
+ <!-- Leaving scons_output_command empty, should already
+ have been handled by xinclude_examples.xslt.
+ -->
+ <xsl:template match="scons:scons_output_command">
+ </xsl:template>
+
+ <!-- Leaving scons_example_file empty, should already
+ have been handled by xinclude_examples.xslt.
+ -->
+ <xsl:template match="scons:scons_example_file">
+ </xsl:template>
+
+ <!-- Changing file to programlisting if printme == '1' -->
+ <xsl:template match="scons:file">
+ <xsl:if test="@printme='1'">
+ <xsl:element name="programlisting">
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text" select="node()" />
+ <xsl:with-param name="replace" select="'__ROOT__'" />
+ <xsl:with-param name="by" select="''" />
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Changing sconstruct to programlisting -->
+ <xsl:template match="scons:sconstruct">
+ <xsl:element name="programlisting">
+ <xsl:call-template name="string-replace-all">
+ <xsl:with-param name="text" select="node()" />
+ <xsl:with-param name="replace" select="'__ROOT__'" />
+ <xsl:with-param name="by" select="''" />
+ </xsl:call-template>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Leave directory empty -->
+ <xsl:template match="scons:directory">
+ </xsl:template>
+
+</xsl:stylesheet>