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

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

all stuff for the page generated by teh Receptionist (config and display) is now put into a pageExtra element

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