revert changes from last revision
[senf.git] / doclib / html-munge.xsl
1 <?xml version="1.0" encoding="utf-8"?>\r
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0">\r
3 \r
4   <xsl:output \r
5     method="html" \r
6     encoding="html" \r
7     doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"\r
8     doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>\r
9 \r
10   <xsl:param name="topdir" select="''"/>\r
11   \r
12   <xsl:template match="*">\r
13     <xsl:copy>\r
14       <xsl:call-template name="copy-attributes"/>\r
15       <xsl:apply-templates/>\r
16     </xsl:copy>\r
17   </xsl:template>\r
18   \r
19   <xsl:template name="copy-attributes">\r
20     <xsl:for-each select="@*">\r
21       <xsl:attribute name="{name(current())}">\r
22         <xsl:choose>\r
23           <xsl:when test="contains(current(),'@TOPDIR@')">\r
24             <xsl:value-of select="substring-before(current(),'@TOPDIR@')"/>\r
25             <xsl:value-of select="$topdir"/>\r
26             <xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>\r
27           </xsl:when>\r
28           <xsl:otherwise>\r
29             <xsl:value-of select="current()"/>\r
30           </xsl:otherwise>\r
31         </xsl:choose>\r
32       </xsl:attribute>\r
33     </xsl:for-each>\r
34   </xsl:template>\r
35   \r
36   <xsl:template match="li[form]"> \r
37   </xsl:template>\r
38   \r
39   <!-- Replace @TOPDIR@ with  relative top directory path -->\r
40   <xsl:template match="@*[contains(current(),'@TOPDIR@')]">\r
41     <xsl:value-of select="substring-before(current(),'@TOPDIR')"/>\r
42     <xsl:value-of select="$topdir"/>\r
43     <xsl:value-of select="substring-after(current(),'@TOPDIR')"/>\r
44   </xsl:template>\r
45   \r
46   <!-- Add 'class' attribute to some special paragraphs/lists -->\r
47   \r
48   <xsl:template name="add-class">\r
49     <xsl:param name="class"/>\r
50     <xsl:copy>\r
51       <xsl:call-template name="copy-attributes"/>\r
52       <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>\r
53       <xsl:apply-templates/>\r
54     </xsl:copy>\r
55   </xsl:template>\r
56 \r
57   <xsl:template match="dl[dt/b/a/text()='Bug:']">\r
58     <xsl:call-template name="add-class">\r
59       <xsl:with-param name="class">xref-bug</xsl:with-param>\r
60     </xsl:call-template>\r
61   </xsl:template>\r
62 \r
63   <xsl:template match="dl[dt/b/a/text()='Fix:']">\r
64     <xsl:call-template name="add-class">\r
65       <xsl:with-param name="class">xref-fix</xsl:with-param>\r
66     </xsl:call-template>\r
67   </xsl:template>\r
68 \r
69   <xsl:template match="dl[dt/b/a/text()='Todo:']">\r
70     <xsl:call-template name="add-class">\r
71       <xsl:with-param name="class">xref-todo</xsl:with-param>\r
72     </xsl:call-template>\r
73   </xsl:template>\r
74 \r
75   <xsl:template match="dl[dt/b/a/text()='Idea:']">\r
76     <xsl:call-template name="add-class">\r
77       <xsl:with-param name="class">xref-idea</xsl:with-param>\r
78     </xsl:call-template>\r
79   </xsl:template>\r
80 \r
81   <xsl:template match="dl[dt/b/text()='Parameters:']">\r
82     <xsl:call-template name="add-class">\r
83       <xsl:with-param name="class">parameters</xsl:with-param>\r
84     </xsl:call-template>\r
85   </xsl:template>\r
86 \r
87   <xsl:template match="table[descendant::td[@class='memItemLeft']]">\r
88     <xsl:call-template name="add-class">\r
89       <xsl:with-param name="class">members</xsl:with-param>\r
90     </xsl:call-template>\r
91   </xsl:template>\r
92 \r
93   <xsl:template match="a[@href=string(current())]" priority="1">\r
94     <xsl:call-template name="add-class">\r
95       <xsl:with-param name="class">literal</xsl:with-param>\r
96     </xsl:call-template>\r
97   </xsl:template>\r
98 \r
99   <xsl:template match="a[contains(@href,'http://')]">\r
100     <xsl:call-template name="add-class">\r
101       <xsl:with-param name="class">ext</xsl:with-param>\r
102     </xsl:call-template>\r
103   </xsl:template>\r
104 \r
105   <xsl:template match="a[not(@href)]">\r
106     <xsl:call-template name="add-class">\r
107       <xsl:with-param name="class">anchor</xsl:with-param>\r
108     </xsl:call-template>\r
109   </xsl:template>\r
110   \r
111 </xsl:stylesheet>\r