Prepping for mdoc et. al. move from monodoc/tools to mcs/tools/mdoc...
[mono.git] / mcs / tools / mdoc / overview.xsl
1 <?xml version="1.0"?>
2
3 <!--
4         Based on Mono's /monodoc/browser/mono-ecma.xsl file.
5 -->
6
7 <xsl:stylesheet
8         version="1.0"
9         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
10         >
11         
12         <xsl:output omit-xml-declaration="yes" />
13         
14         <xsl:include href="stylesheet.xsl"/>
15         
16         <xsl:param name="ext" select="'xml'"/>
17         <xsl:param name="namespace" select="''"/>
18
19         <xsl:variable name="max-types">50</xsl:variable>
20
21         <xsl:template match="Overview">
22                 <Page>
23
24                         <Title>
25                                 <xsl:value-of select="Title"/>
26                                 <xsl:if test="not($namespace='' or $namespace='all' or count(Types/Namespace)=1)">
27                                         <xsl:value-of select="': '"/>
28                                         <xsl:value-of select="$namespace"/>
29                                 </xsl:if>
30                         </Title>
31
32                         <CollectionTitle>
33                                 <xsl:if test="not($namespace='' or $namespace='all')">
34                                         <a href="../index.{$ext}"><xsl:value-of select="Title"/></a>
35                                 </xsl:if>                       
36                         </CollectionTitle>
37                         
38                         <PageTitle>
39                                 <xsl:choose>
40                                 <xsl:when test="not($namespace='' or $namespace='all')">
41                                         <xsl:call-template name="GetNamespaceName">
42                                                 <xsl:with-param name="ns" select="$namespace" />
43                                         </xsl:call-template>
44                                 </xsl:when>
45                                 <xsl:otherwise>
46                                         <xsl:value-of select="Title"/>
47                                 </xsl:otherwise>
48                                 </xsl:choose>
49                         </PageTitle>
50
51                         <!--
52                         <SideBar>
53                         <xsl:if test="not($namespace='')">
54                                 <p style="font-weight: bold; border-bottom: thin solid black"><a href="../index.{$ext}"><xsl:value-of select="Assembly"/></a></p>
55                                 <xsl:for-each select="Types/Namespace">
56                                         <xsl:sort select="@Name"/>
57                                         <div>
58                                                 <a href="../{@Name}/index.{$ext}">
59                                                         <xsl:value-of select="@Name"/>
60                                                 </a>
61                                         </div>
62                                 </xsl:for-each>
63                         </xsl:if>
64                         <xsl:if test="$namespace=''">
65                                         <div class="AssemblyRemarks" style="margin-top: 1em; margin-bottom: 1em">
66                                                 <xsl:apply-templates select="Remarks" mode="notoppara"/>
67                                         </div>
68                         </xsl:if>
69                         </SideBar>
70                         -->
71                         
72                         <Summary>
73                                 <xsl:if test="$namespace=''">
74                                         <div class="AssemblyRemarks" style="margin-top: 1em; margin-bottom: 1em">
75                                                 <xsl:apply-templates select="Remarks" mode="notoppara"/>
76                                         </div>
77                                 </xsl:if>
78                         </Summary>
79                         
80                         <Signature>
81                         </Signature>
82                         
83                         <Remarks>                       
84                                 <xsl:choose>
85                                         <xsl:when test="Types/Namespace[@Name=$namespace][count(Type)>0] and $namespace != ''">
86                                                 <!-- show all types within namespace -->
87                                                 <h2 class="Section"><xsl:call-template name="GetNamespaceName" /></h2>
88                                                 <xsl:call-template name="CreateNamespaceDetails">
89                                                         <xsl:with-param name="ns" select="Types/Namespace[@Name=$namespace]" />
90                                                 </xsl:call-template>
91                                         </xsl:when>
92                                         <xsl:when test="count(Types//Type) &lt; $max-types">
93                                                 <!-- index; show all types -->
94                                                 <xsl:for-each select="Types/Namespace">
95                                                         <xsl:sort select="@Name"/>
96                                                         <h2 class="Section"><xsl:call-template name="CreateNamespaceLink" /></h2>
97                                                         <xsl:call-template name="CreateNamespaceDetails">
98                                                                 <xsl:with-param name="ns" select="." />
99                                                         </xsl:call-template>
100                                                 </xsl:for-each>
101                                         </xsl:when>
102                                         <xsl:otherwise>
103                                                 <!-- index; show only namespaces -->
104                                                 <xsl:for-each select="Types/Namespace">
105                                                         <xsl:sort select="@Name"/>
106                                                         <h2 class="Section"><xsl:call-template name="CreateNamespaceLink" /></h2>
107                                                         <p><xsl:apply-templates select="document(concat('ns-',@Name,'.xml'), .)/Namespace/Docs/summary" mode="notoppara"/></p>
108                                                 </xsl:for-each>
109                                         </xsl:otherwise>
110                                 </xsl:choose>
111
112                         </Remarks>
113                                 
114                         <Members>
115                         </Members>
116                         
117                         <xsl:copy-of select="Copyright"/>
118                         
119                 </Page>
120
121         </xsl:template>
122         <xsl:template name="CreateNamespaceDetails">
123                 <xsl:param name="ns" />
124                                         <p><xsl:apply-templates select="document(concat('ns-',$ns/@Name,'.xml'), .)/Namespace/Docs/remarks" mode="notoppara"/></p>
125
126                                         <table class="TypesListing" style="margin-top: 1em">
127                         
128                                         <tr>
129                                                 <th>Type</th>
130                                                 <th>Description</th>
131                                         </tr>                           
132                                                 
133                                         <xsl:for-each select="$ns/Type">
134                                                 <xsl:sort select="@Name"/>
135                                                 <tr valign="top">
136                                                         <td>
137                                                                 <xsl:variable name="path">
138                                                                         <xsl:choose>
139                                                                         <xsl:when test="$namespace=parent::Namespace/@Name">.</xsl:when>
140                                                                         <xsl:otherwise><xsl:value-of select="parent::Namespace/@Name"/></xsl:otherwise>
141                                                                         </xsl:choose>
142                                                                 </xsl:variable>
143                                                         
144                                                                 <a href="{$path}/{@Name}.{$ext}">
145                                                                         <xsl:choose>
146                                                                                 <xsl:when test="@DisplayName != ''">
147                                                                                         <xsl:value-of select="translate (@DisplayName, '+', '.')"/>
148                                                                                 </xsl:when>
149                                                                                 <xsl:otherwise>
150                                                                                         <xsl:value-of select="translate (@Name, '+', '.')"/>
151                                                                                 </xsl:otherwise>
152                                                                         </xsl:choose>
153                                                                 </a>
154                                                         </td>
155                                                         <td>
156                                                                 <xsl:variable name="docdir">
157                                                                         <xsl:choose>
158                                                                                 <xsl:when test="parent::Namespace/@Name = ''">.</xsl:when>
159                                                                                 <xsl:otherwise>
160                                                                                         <xsl:value-of select="parent::Namespace/@Name" />
161                                                                                 </xsl:otherwise>
162                                                                         </xsl:choose>
163                                                                 </xsl:variable>
164                                                                 <xsl:apply-templates select="document(concat($docdir, '/', @Name, '.xml'), .)/Type/Docs/summary" mode="notoppara"/>
165                                                         </td>
166                                                 </tr>
167                                         </xsl:for-each>
168                                                 
169                                         </table>
170         </xsl:template>
171
172         <xsl:template name="GetNamespaceName">
173                 <xsl:param name="ns" select="@Name" />
174                 <xsl:choose>
175                         <xsl:when test="$ns = ''">
176                                 <xsl:text>Root</xsl:text>
177                         </xsl:when>
178                         <xsl:otherwise>
179                                 <xsl:value-of select="$ns" />
180                         </xsl:otherwise>
181                 </xsl:choose>
182                 <xsl:text> Namespace</xsl:text>
183         </xsl:template>
184
185         <xsl:template name="CreateNamespaceLink">
186                 <xsl:choose>
187                         <xsl:when test="@Name =''">
188                                 <xsl:call-template name="GetNamespaceName" />
189                         </xsl:when>
190                         <xsl:otherwise>
191                                 <a href="{@Name}/index.{$ext}"><xsl:call-template name="GetNamespaceName" /></a>
192                         </xsl:otherwise>
193                 </xsl:choose>
194         </xsl:template>
195         
196 </xsl:stylesheet>
197