1<?xml version='1.0'?> <!--*- mode: xml -*--> 2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 3 version='1.0' 4 xmlns="http://www.devhelp.net/book" 5 xmlns:str="http://exslt.org/strings" 6 exclude-result-prefixes="str"> 7 8 <xsl:template name="generate.devhelp2"> 9 <xsl:call-template name="write.chunk"> 10 <xsl:with-param name="filename"> 11 <xsl:choose> 12 <xsl:when test="$gtkdoc.bookname"> 13 <xsl:value-of select="$gtkdoc.bookname"/> 14 </xsl:when> 15 <xsl:otherwise> 16 <xsl:text>book</xsl:text> 17 </xsl:otherwise> 18 </xsl:choose> 19 <xsl:text>.devhelp2</xsl:text> 20 </xsl:with-param> 21 <xsl:with-param name="method" select="'xml'"/> 22 <xsl:with-param name="indent" select="'yes'"/> 23 <xsl:with-param name="encoding" select="'utf-8'"/> 24 <xsl:with-param name="doctype-public"/> 25 <xsl:with-param name="content"> 26 <xsl:call-template name="devhelp2"/> 27 </xsl:with-param> 28 </xsl:call-template> 29 </xsl:template> 30 31 <xsl:variable name="gtkdoc.refsect2" select="//refsect2"/> 32 33 <xsl:template name="devhelp2"> 34 <xsl:variable name="title"> 35 <xsl:apply-templates select="." mode="generate.devhelp2.toc.title.mode"/> 36 </xsl:variable> 37 <xsl:variable name="link"> 38 <xsl:call-template name="href.target"/> 39 </xsl:variable> 40 <xsl:variable name="author"> 41 <xsl:if test="articleinfo|bookinfo"> 42 <xsl:apply-templates mode="generate.devhelp2.authors" 43 select="articleinfo|bookinfo"/> 44 </xsl:if> 45 </xsl:variable> 46 <xsl:variable name="online"> 47 <xsl:value-of select="/book/bookinfo/releaseinfo/ulink[@role='online-location']/@url"/> 48 </xsl:variable> 49 <xsl:variable name="toc.nodes" select="part|reference|preface|chapter| 50 appendix|article|bibliography| 51 glossary|index|refentry| 52 bridgehead|sect1"/> 53 54 <book title="{$title}" link="{$link}" author="{$author}" name="{$gtkdoc.bookname}" version="2" language="c"> 55 <xsl:if test="$online != ''"> 56 <xsl:attribute name="online"><xsl:value-of select="$online"/></xsl:attribute> 57 </xsl:if> 58 <xsl:if test="$toc.nodes"> 59 <chapters> 60 <xsl:apply-templates select="$toc.nodes" 61 mode="generate.devhelp2.toc.mode"/> 62 </chapters> 63 </xsl:if> 64 <functions> 65 <xsl:apply-templates select="$gtkdoc.refsect2[@role]" 66 mode="generate.devhelp2.index.mode"/> 67 <xsl:apply-templates select="$gtkdoc.refsect2/refsect3[@role='enum_members']/informaltable/tgroup/tbody/row[@role='constant']" 68 mode="generate.devhelp2.index.mode"/> 69 <xsl:apply-templates select="$gtkdoc.refsect2/refsect3[@role='struct_members']/informaltable/tgroup/tbody/row[@role='member']" 70 mode="generate.devhelp2.index.mode"/> 71 </functions> 72 </book> 73 </xsl:template> 74 75 <xsl:template match="*" mode="generate.devhelp2.toc.mode"> 76 <xsl:variable name="title"> 77 <xsl:apply-templates select="." mode="generate.devhelp2.toc.title.mode"/> 78 </xsl:variable> 79 <xsl:variable name="target"> 80 <xsl:variable name="anchor" select="title/anchor"/> 81 <xsl:choose> 82 <xsl:when test="$anchor"> 83 <xsl:call-template name="href.target"> 84 <xsl:with-param name="object" select="$anchor"/> 85 </xsl:call-template> 86 </xsl:when> 87 <xsl:otherwise> 88 <xsl:call-template name="href.target"/> 89 </xsl:otherwise> 90 </xsl:choose> 91 </xsl:variable> 92 93 <sub name="{$title}" link="{$target}"> 94 <xsl:apply-templates select="section|sect1| 95 refentry|refsect| 96 bridgehead|part|chapter|glossary|index" 97 mode="generate.devhelp2.toc.mode"/> 98 </sub> 99 </xsl:template> 100 101 <xsl:template match="*" mode="generate.devhelp2.index.mode"> 102 <xsl:variable name="title" select="title| 103 term/literal| 104 entry[@role='enum_member_name']/para| 105 entry[@role='struct_member_name']/para/structfield/@id"/> 106 <xsl:variable name="anchor" select="title/anchor| 107 entry[@role='enum_member_name']/para| 108 entry[@role='struct_member_name']/para/structfield"/> 109 <xsl:variable name="type" select="@role"/> 110 <xsl:variable name="condition" select="@condition"/> 111 <xsl:variable name="target"> 112 <xsl:choose> 113 <xsl:when test="$anchor"> 114 <xsl:call-template name="href.target"> 115 <xsl:with-param name="object" select="$anchor"/> 116 </xsl:call-template> 117 </xsl:when> 118 <xsl:otherwise> 119 <xsl:call-template name="href.target"/> 120 </xsl:otherwise> 121 </xsl:choose> 122 </xsl:variable> 123 <keyword type="{$type}" name="{$title}" link="{$target}"> 124 <xsl:if test="$condition"> 125 <xsl:for-each select="str:split($condition,'|')"> 126 <xsl:variable name="attrname"> 127 <xsl:value-of select="substring-before(.,':')"/> 128 </xsl:variable> 129 <xsl:choose> 130 <xsl:when test="string-length($attrname)=0"> 131 <xsl:variable name="attrname2"> 132 <xsl:value-of select="."/> 133 </xsl:variable> 134 <xsl:attribute name="{$attrname2}"/> 135 </xsl:when> 136 <xsl:otherwise> 137 <xsl:attribute name="{$attrname}"> 138 <xsl:value-of select="substring-after(.,':')"/> 139 </xsl:attribute> 140 </xsl:otherwise> 141 </xsl:choose> 142 </xsl:for-each> 143 </xsl:if> 144 </keyword> 145 </xsl:template> 146 147 <!-- get title --> 148 <xsl:template match="article" mode="generate.devhelp2.toc.title.mode"> 149 <xsl:value-of select="articleinfo/title"/> 150 </xsl:template> 151 <xsl:template match="book" mode="generate.devhelp2.toc.title.mode"> 152 <xsl:value-of select="bookinfo/title"/> 153 </xsl:template> 154 <xsl:template match="refentry" mode="generate.devhelp2.toc.title.mode"> 155 <xsl:value-of select="refmeta/refentrytitle"/> 156 </xsl:template> 157 <xsl:template match="*" mode="generate.devhelp2.toc.title.mode"> 158 <xsl:value-of select="title"/> 159 </xsl:template> 160 161 <!-- generate list of authors ... --> 162 <xsl:template match="articleinfo|bookinfo" mode="generate.devhelp2.authors"> 163 <xsl:for-each select="authorgroup/author"> 164 <xsl:value-of select="firstname"/> 165 <xsl:text> </xsl:text> 166 <xsl:value-of select="surname"/> 167 <xsl:if test="not(last())"> 168 <xsl:text>, </xsl:text> 169 </xsl:if> 170 </xsl:for-each> 171 </xsl:template> 172 173</xsl:stylesheet> 174