source: trunk/gsdl3/web/interfaces/default/transform/classifier.xsl@ 4723

Last change on this file since 4723 was 4723, checked in by kjdon, 21 years ago

fixed a typo

  • Property svn:keywords set to Author Date Id Revision
File size: 12.8 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:java="http://xml.apache.org/xslt/java"
5 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
6 extension-element-prefixes="java util"
7 exclude-result-prefixes="java util">
8
9 <xsl:include href="style.xsl"/>
10
11 <xsl:output method="html"/>
12
13
14 <xsl:template name="pageHead">
15 <head>
16 <title><xsl:value-of select="util:getInterfaceText($interface_name, page/@lang, 'gsdl')"/></title>
17 </head>
18 </xsl:template>
19
20 <xsl:template match="pageResponse">
21 <xsl:variable name="collName"><xsl:value-of select="/page/pageRequest/paramList/param[@name='c']/@value"/></xsl:variable>
22 <xsl:variable name="serviceName"><xsl:value-of select="service/@name"/></xsl:variable>
23 <center>
24 <xsl:call-template name="collectionPageBanner">
25 <xsl:with-param name="collName" select="$collName"/>
26 </xsl:call-template>
27 <xsl:apply-templates select="service/classifierList">
28 <xsl:with-param name="collName" select="$collName"/>
29 <xsl:with-param name="serviceName" select="$serviceName"/>
30 </xsl:apply-templates>
31 <p/>
32 <xsl:apply-templates select="classifier">
33 <xsl:with-param name="collName" select="$collName"/>
34 <xsl:with-param name="serviceName" select="$serviceName"/>
35 </xsl:apply-templates>
36 </center>
37 </xsl:template>
38
39 <xsl:template match="classifierList">
40 <xsl:param name="collName"/>
41 <xsl:param name="serviceName"/>
42 <xsl:variable name="selected" select="/page/pageResponse/classifier/@name"/>
43 <table width='537'><tr>
44 <xsl:for-each select="classifier">
45 <xsl:variable name="cname" select="@name"/>
46 <xsl:choose>
47 <xsl:when test="@name=$selected">
48 <td align='center'><xsl:value-of select="ancestor::service/display/classifier[@name=$cname]/name"/></td>
49 </xsl:when>
50 <xsl:otherwise>
51 <td align='center'><a href="{$library_name}?a=b&amp;rt=r&amp;s={$serviceName}&amp;c={$collName}&amp;cl={@name}"><xsl:value-of select="ancestor::service/display/classifier[@name=$cname]/name"/></a></td></xsl:otherwise></xsl:choose>
52 </xsl:for-each>
53 </tr></table>
54 <xsl:call-template name="greenBar"/>
55 </xsl:template>
56
57 <!-- recursively process all nodes and documents -->
58
59 <xsl:template match="classifier">
60 <xsl:param name="collName"/>
61 <xsl:param name="serviceName"/>
62 <xsl:variable name="cl_name"><xsl:value-of select="@name"/></xsl:variable>
63 <xsl:variable name="interleave"><xsl:value-of select="/page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@documentInterleave"/></xsl:variable>
64 <xsl:variable name="orientation"><xsl:value-of select="/page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@orientation"/></xsl:variable>
65 <xsl:variable name='mode'><xsl:value-of select='$orientation'/>-<xsl:value-of select='$interleave'/></xsl:variable>
66 <!-- cant seem to do this any other way, ie mode='{$mode}' doesn't work -->
67 <xsl:choose>
68 <xsl:when test="$mode='horizontal-true'">
69 <xsl:apply-templates select="." mode='horizontal-true'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
70 </xsl:when>
71 <xsl:when test="$mode='horizontal-false'">
72 <xsl:apply-templates select="." mode='horizontal-false'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
73 </xsl:when>
74 <xsl:when test="$mode='vertical-true'">
75 <xsl:apply-templates select="." mode='vertical-true'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
76 </xsl:when>
77 <xsl:when test="$mode='vertical-false'">
78 <xsl:apply-templates select="." mode='vertical-false'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
79 </xsl:when>
80 </xsl:choose>
81 </xsl:template>
82
83 <!-- vertical and interleave = true: process all document and classifier children together, recursively -->
84 <xsl:template match="classifier" mode="vertical-true">
85 <xsl:param name="collName"/>
86 <xsl:param name="serviceName"/>
87 <table width='537'>
88 <xsl:for-each select='classifierNode|documentNode'>
89 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
90 <xsl:if test='name()="classifierNode"'>
91 <!--recurse into the children-->
92 <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
93 </xsl:if>
94 </xsl:for-each>
95 </table>
96 <xsl:call-template name="greenBar"/>
97 </xsl:template>
98
99 <!--vertical and interleave = false: process all classifier nodes, recursively, then do the document ones separately -->
100 <xsl:template match="classifier" mode="vertical-false">
101 <xsl:param name="collName"/>
102 <xsl:param name="serviceName"/>
103 <!-- process the nodes and documents separately-->
104 <table width='537'>
105 <xsl:for-each select='classifierNode'>
106 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
107 <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr></xsl:for-each>
108 </table>
109 <xsl:if test="descendant::documentNode"><!--netscape doesn't like empty tables-->
110 <table width='537'>
111 <xsl:for-each select='descendant::documentNode'>
112 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
113 </xsl:for-each>
114 </table>
115 </xsl:if>
116 <xsl:call-template name="greenBar"/>
117 </xsl:template>
118
119
120 <xsl:template match="classifier" mode="horizontal-true">
121 <xsl:param name="collName"/>
122 <xsl:param name="serviceName"/>
123 <!-- process the nodes and documents together -->
124
125 <table>
126 <tr valign='top'>
127 <xsl:for-each select='classifierNode|documentNode'>
128 <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
129 </xsl:for-each>
130 </tr>
131 <tr valign='top'>
132 <xsl:for-each select='classifierNode|documentNode'>
133 <td><xsl:text> </xsl:text></td> <!-- the empty cell for the icon -->
134 <xsl:choose><xsl:when test='name()="classifierNode" and classifierNode|documentNode'>
135 <xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
136 </xsl:when>
137 <xsl:otherwise>
138 <td><xsl:text> </xsl:text></td>
139 </xsl:otherwise>
140 </xsl:choose>
141 </xsl:for-each>
142 </tr>
143 </table>
144 <xsl:call-template name="greenBar"/>
145 </xsl:template>
146
147 <xsl:template match="classifier" mode="horizontal-false">
148 <xsl:param name="collName"/>
149 <xsl:param name="serviceName"/>
150 <!-- process the nodes and documents separately-->
151
152 <table width='537'><tr valign='top'>
153 <xsl:for-each select='classifierNode'>
154 <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
155 </xsl:for-each></tr>
156 <tr valign='top'>
157 <xsl:for-each select='classifierNode'>
158 <xsl:apply-templates select='.' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></xsl:for-each></tr>
159 </table>
160 <xsl:if test="descendant::documentNode"> <!-- netscape complains about an empty table-->
161 <table width='537'>
162 <xsl:for-each select='descendant::documentNode'>
163 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
164 </xsl:for-each>
165 </table>
166 </xsl:if>
167 <xsl:call-template name="greenBar"/>
168 </xsl:template>
169
170 <!-- default doc node template: icon and title -->
171 <xsl:template match="documentNode">
172 <xsl:param name="collName"/>
173 <td><a href="{$library_name}?a=d&amp;c={$collName}&amp;d={@nodeID}&amp;dt={@documentType}"><xsl:apply-templates select="." mode="displayNodeIcon"/></a></td><td><xsl:value-of select="metadataList/metadata[@name='Title']"/></td>
174 </xsl:template>
175
176 <!-- default classifier node template: icon + title -->
177 <xsl:template match="classifierNode">
178 <xsl:param name="collName"/>
179 <xsl:param name="serviceName"/>
180 <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/><xsl:if test="classifierNode|documentNode">.pr</xsl:if></xsl:attribute><img src='interfaces/default/images/bshelf.gif' border='0' width='20' height='16' /></a></td><td align='left'><xsl:value-of select="metadataList/metadata[@name='Title']"/></td>
181 </xsl:template>
182
183 <!-- an alternative classifier node template: the title is a link -->
184 <!--
185 <xsl:template match="classifierNode">
186 <xsl:param name="collName"/>
187 <xsl:param name="serviceName"/>
188 <td><a><xsl:attribute name='href'><xsl:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xsl:value-of select='$serviceName'/>&amp;c=<xsl:value-of select='$collName'/>&amp;cl=<xsl:value-of select='@nodeID'/><xsl:if test="classifierNode|documentNode">.pr</xsl:if></xsl:attribute><xsl:value-of select="metadataList/metadata[@name='Title']"/></a></td>
189 </xsl:template>
190 -->
191
192<!-- processing for the recursive bit -->
193<!-- if interleave=true, process all child nodes and documents, else just do nodes -->
194
195 <xsl:template match="classifierNode" mode="process-all-children">
196 <xsl:param name="collName"/>
197 <xsl:param name="serviceName"/>
198 <td><p/>
199 <!-- only do this if there are children -->
200 <xsl:if test="classifierNode|documentNode">
201 <xsl:choose>
202 <xsl:when test='@orientation="vertical"'>
203 <table>
204 <xsl:for-each select='classifierNode|documentNode'>
205 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
206 <xsl:if test='name()="classifierNode"'>
207 <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
208 </xsl:if>
209 </xsl:for-each>
210 </table>
211 </xsl:when>
212 <xsl:otherwise> <!-- horizontal -->
213 <table>
214 <tr valign='top'>
215 <xsl:for-each select='classifierNode|documentNode'>
216 <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
217 <xsl:if test='name()="classifierNode"'>
218 <xsl:apply-templates select='.' mode='process-all-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
219 </xsl:if>
220 </xsl:for-each>
221 </tr>
222 </table>
223 </xsl:otherwise>
224 </xsl:choose>
225 </xsl:if>
226 </td>
227 </xsl:template>
228
229 <xsl:template match="classifierNode" mode="process-node-children">
230 <xsl:param name="collName"/>
231 <xsl:param name="serviceName"/>
232 <td><p/>
233 <xsl:if test='classifierNode'><!-- only do this if there are child nodes - netscape craps out at an empty table like <table /> -->
234 <xsl:choose>
235 <xsl:when test='@orientation="vertical"'>
236 <table>
237 <xsl:for-each select='classifierNode'>
238 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
239 <tr valign='top'><td><xsl:text> </xsl:text></td><xsl:apply-templates select='.' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates></tr>
240 </xsl:for-each>
241 </table>
242 </xsl:when>
243 <xsl:otherwise>
244 <table>
245 <tr valign='top'><xsl:apply-templates select='classifierNode'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
246 <xsl:apply-templates select='classifierNode' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
247 </table>
248 </xsl:otherwise>
249 </xsl:choose>
250 </xsl:if>
251 </td>
252 </xsl:template>
253
254</xsl:stylesheet>
255
256
257
258
259
260
Note: See TracBrowser for help on using the repository browser.