summaryrefslogtreecommitdiff
path: root/assembly/topic-maker.xsl
blob: b705aca05db5c768c2bbef1b8194d18203316ab5 (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
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:exsl="http://exslt.org/common"
  xmlns="http://docbook.org/ns/docbook"
  exclude-result-prefixes="exsl"
  version="1.0">

<!-- $Id: topic-maker.xsl,v 1.3 2012-04-16 00:29:35 bobs Exp $ -->

<!-- This stylesheet convert DocBook elements into topic element.
     The chunking takes place elsewhere.  -->

<xsl:import href="../xhtml/docbook.xsl"/>
    
    
<xsl:param name="assembly.filename">myassembly.xml</xsl:param>
<xsl:param name="chunk.section.depth" select="3"/>
<xsl:param name="chunk.first.sections" select="1"/>
<xsl:param name="use.id.as.filename" select="1"/>
<xsl:param name="html.ext">.xml</xsl:param> 
<xsl:param name="base.dir">topics/</xsl:param>
<xsl:param name="root.filename" select="local-name(/*)"/>
<xsl:param name="html.extra.head.links" select="0"/>
<xsl:param name="stylesheet.result.type">xhtml</xsl:param>
<xsl:param name="navig.showtitles" select="0"/>
<xsl:param name="suppress.navigation" select="1"/>
<xsl:param name="chunk.append"/>
<xsl:param name="chunk.quietly" select="0"/>
<xsl:param name="chunker.output.method" select="'xml'"/>
<xsl:param name="chunker.output.encoding" select="'UTF-8'"/>
<xsl:param name="chunker.output.indent" select="'no'"/>
<xsl:param name="chunker.output.omit-xml-declaration" select="'no'"/>
<xsl:param name="chunker.output.standalone" select="'no'"/>
<xsl:param name="chunker.output.doctype-public" select="''"/>
<xsl:param name="chunker.output.doctype-system" select="''"/>
<xsl:param name="namespace">http://docbook.org/ns/docbook</xsl:param>

<!-- These elements are converted to topic elements -->
<xsl:param name="topic.elements">preface chapter article section</xsl:param>
<xsl:variable name="topic.list"
              select="concat(' ', normalize-space($topic.elements), ' ')"/>

<!-- Default behavior is identity copy -->
<xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:apply-templates/>
   </xsl:copy>
</xsl:template>

<xsl:template match="preface|chapter|appendix|section|article">
  <xsl:variable name="element.name">
    <xsl:call-template name="element.name"/>
  </xsl:variable>

  <xsl:element name="{$element.name}" namespace="{$namespace}">
    <xsl:apply-templates select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

<xsl:template name="element.name">
  <xsl:param name="node" select="."/>

  <xsl:variable name="src.element" select="concat(' ', local-name($node), ' ')"/>
  <xsl:choose>
    <xsl:when test="contains($topic.list, $src.element)">
      <xsl:text>topic</xsl:text>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="local-name($node)"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

</xsl:stylesheet>