Mercurial > pidgin.yaz
comparison doxy2devhelp.xsl @ 20912:f34539eb7a61
Add some xsl magic to generate a .devhelp index from doxygen's XML output,
allowing the documentation to be viewed in Devhelp. It's not perfect ---
there are some broken links and the transformation is a bit fragile --- but
works well enough to be useful.
author | Will Thompson <will.thompson@collabora.co.uk> |
---|---|
date | Sat, 13 Oct 2007 15:44:43 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
20910:54d232b52607 | 20912:f34539eb7a61 |
---|---|
1 <xsl:stylesheet | |
2 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | |
3 xmlns:fo="http://www.w3.org/1999/XSL/Format" | |
4 version="1.0"> | |
5 | |
6 <!-- Based on http://bur.st/~eleusis/devhelp/doxy2devhelp.xsl | |
7 (http://bur.st/~eleusis/devhelp/README) | |
8 which is based on http://bugzilla.gnome.org/show_bug.cgi?id=122450 | |
9 --> | |
10 | |
11 <xsl:output method="xml" version="1.0" indent="yes"/> | |
12 | |
13 <xsl:param name="reference_prefix"></xsl:param> | |
14 | |
15 <xsl:template match="/"> | |
16 <book title="Pidgin Documentation" | |
17 name="pidgin" | |
18 link="{$reference_prefix}main.html"> | |
19 <chapters> | |
20 <sub name="Modules" link="{$reference_prefix}modules.html"> | |
21 <xsl:apply-templates select="doxygenindex/compound[@kind='group']"> | |
22 <xsl:sort select="."/> | |
23 </xsl:apply-templates> | |
24 </sub> | |
25 <!-- annotated.html has the short descriptions beside each struct. is | |
26 that more useful than being grouped alphabetically? | |
27 --> | |
28 <sub name="Structs" link="{$reference_prefix}classes.html"> | |
29 <xsl:apply-templates select="doxygenindex/compound[@kind='struct']"> | |
30 <xsl:sort select="."/> | |
31 </xsl:apply-templates> | |
32 </sub> | |
33 <!-- This is redundant given Modules --> | |
34 <!-- | |
35 <sub name="Directories" link="{$reference_prefix}dirs.html"> | |
36 <xsl:apply-templates select="doxygenindex/compound[@kind='dir']"> | |
37 <xsl:sort select="."/> | |
38 </xsl:apply-templates> | |
39 </sub> | |
40 --> | |
41 <!-- FIXME: Some files show up here but are broken links; mostly | |
42 files that are under pages... | |
43 --> | |
44 <sub name="Files" link="{$reference_prefix}files.html"> | |
45 <xsl:apply-templates select="doxygenindex/compound[@kind='file']"> | |
46 <xsl:sort select="."/> | |
47 </xsl:apply-templates> | |
48 </sub> | |
49 <sub name="Signals, HOWTOs, Other" link="{$reference_prefix}pages.html"> | |
50 <xsl:apply-templates select="doxygenindex/compound[@kind='page']"> | |
51 <xsl:sort select="."/> | |
52 </xsl:apply-templates> | |
53 </sub> | |
54 </chapters> | |
55 | |
56 <functions> | |
57 <!-- @todo: maybe select only the real functions, ie those with kind=="function"? --> | |
58 <xsl:apply-templates select="doxygenindex/compound/member" mode="as-function"/> | |
59 </functions> | |
60 </book> | |
61 </xsl:template> | |
62 | |
63 <xsl:template match="compound"> | |
64 <xsl:param name="name"><xsl:value-of select="name"/></xsl:param> | |
65 <xsl:param name="link"><xsl:value-of select="@refid"/>.html</xsl:param> | |
66 <sub name="{$name}" link="{$reference_prefix}{$link}"> | |
67 <xsl:apply-templates select="member" mode="as-sub"> | |
68 <xsl:sort select="."/> | |
69 </xsl:apply-templates> | |
70 </sub> | |
71 </xsl:template> | |
72 | |
73 <xsl:template match="member" mode="as-function"> | |
74 <!-- | |
75 <function name="atk_set_value" link="atk-atkvalue.html#ATK-SET-VALUE"/> | |
76 --> | |
77 <xsl:param name="name"><xsl:value-of select="name"/></xsl:param> | |
78 <!-- Link is refid attribute of parent element + "#" + diff between refid of parent and own refid --> | |
79 <xsl:param name="refid_parent"><xsl:value-of select="parent::node()/@refid"/></xsl:param> | |
80 <xsl:param name="own_refid"><xsl:value-of select="@refid"/></xsl:param> | |
81 <xsl:param name="offset"><xsl:value-of select="string-length($refid_parent) + 3"/></xsl:param> | |
82 <xsl:param name="ref_diff"><xsl:value-of select="substring($own_refid, $offset, 33)"/></xsl:param> | |
83 <xsl:param name="link"><xsl:value-of select="$refid_parent"/>.html#<xsl:value-of select="$ref_diff"/></xsl:param> | |
84 <function name="{$name}" link="{$reference_prefix}{$link}"/> | |
85 </xsl:template> | |
86 | |
87 <xsl:template match="member" mode="as-sub"> | |
88 <xsl:param name="name"><xsl:value-of select="name"/></xsl:param> | |
89 <!-- Link is refid attribute of parent element + "#" + diff between refid of parent and own refid --> | |
90 <xsl:param name="refid_parent"><xsl:value-of select="parent::node()/@refid"/></xsl:param> | |
91 <xsl:param name="own_refid"><xsl:value-of select="@refid"/></xsl:param> | |
92 <xsl:param name="offset"><xsl:value-of select="string-length($refid_parent) + 3"/></xsl:param> | |
93 <xsl:param name="ref_diff"><xsl:value-of select="substring($own_refid, $offset, 33)"/></xsl:param> | |
94 <xsl:param name="link"><xsl:value-of select="$refid_parent"/>.html#<xsl:value-of select="$ref_diff"/></xsl:param> | |
95 <sub name="{$name}" link="{$reference_prefix}{$link}"/> | |
96 </xsl:template> | |
97 | |
98 </xsl:stylesheet> |