source: trunk/gsdl3/web/interfaces/nzdl/transform/classifier.xsl@ 4273

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

work still in progress for nzdl

  • Property svn:keywords set to Author Date Id Revision
File size: 12.1 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:call-template name="headScript"/>
16 </xsl:template>
17
18 <xsl:template match="pageResponse">
19 <xsl:variable name="collName"><xsl:value-of select="ancestor::page/pageRequest/paramList/param[@name='c']/@value"/></xsl:variable>
20 <xsl:variable name="serviceName"><xsl:value-of select="service/@name"/></xsl:variable>
21 <center>
22 <xsl:call-template name="collectionPageBanner">
23 <xsl:with-param name="collName" select="$collName"/>
24 <xsl:with-param name="pageType">brwse</xsl:with-param>
25 </xsl:call-template>
26 <p/>
27 <xsl:apply-templates select="classifier">
28 <xsl:with-param name="collName" select="$collName"/>
29 <xsl:with-param name="serviceName" select="$serviceName"/>
30 </xsl:apply-templates>
31 </center>
32 </xsl:template>
33
34
35 <!-- recursively process all nodes and documents -->
36
37 <xsl:template match="classifier">
38 <xsl:param name="collName"/>
39 <xsl:param name="serviceName"/>
40 <xsl:variable name="cl_name"><xsl:value-of select="@name"/></xsl:variable>
41 <xsl:variable name="interleave"><xsl:value-of select="ancestor::page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@documentInterleave"/></xsl:variable>
42 <xsl:variable name="orientation"><xsl:value-of select="ancestor::page/pageResponse/service/classifierList/classifier[@name=$cl_name]/@orientation"/></xsl:variable>
43 <xsl:variable name='mode'><xsl:value-of select='$orientation'/>-<xsl:value-of select='$interleave'/></xsl:variable>
44 <!-- cant seem to do this any other way, ie mode='{$mode}' doesn't work -->
45 <xsl:choose>
46 <xsl:when test="$mode='horizontal-true'">
47 <xsl:apply-templates select="." mode='horizontal-true'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
48 </xsl:when>
49 <xsl:when test="$mode='horizontal-false'">
50 <xsl:apply-templates select="." mode='horizontal-false'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
51 </xsl:when>
52 <xsl:when test="$mode='vertical-true'">
53 <xsl:apply-templates select="." mode='vertical-true'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
54 </xsl:when>
55 <xsl:when test="$mode='vertical-false'">
56 <xsl:apply-templates select="." mode='vertical-false'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
57 </xsl:when>
58 </xsl:choose>
59 </xsl:template>
60
61 <!-- vertical and interleave = true: process all document and classifier children together, recursively -->
62 <xsl:template match="classifier" mode="vertical-true">
63 <xsl:param name="collName"/>
64 <xsl:param name="serviceName"/>
65 <table width='537'>
66 <xsl:for-each select='classifierNode|documentNode'>
67 <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>
68 <xsl:if test='name()="classifierNode"'>
69 <!--recurse into the children-->
70 <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>
71 </xsl:if>
72 </xsl:for-each>
73 </table>
74 <xsl:call-template name="greenBar"/>
75 </xsl:template>
76
77 <!--vertical and interleave = false: process all classifier nodes, recursively, then do the document ones separately -->
78 <xsl:template match="classifier" mode="vertical-false">
79 <xsl:param name="collName">coll-name</xsl:param>
80 <xsl:param name="serviceName">service-name</xsl:param>
81 <!-- process the nodes and documents separately-->
82 <table width='537'>
83 <xsl:for-each select='classifierNode'>
84 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
85 <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>
86 </table>
87 <table width='537'>
88 <xsl:for-each select='//documentNode'>
89 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
90 </xsl:for-each>
91 </table>
92 <xsl:call-template name="greenBar"/>
93 </xsl:template>
94
95
96 <xsl:template match="classifier" mode="horizontal-true">
97 <xsl:param name="collName">coll-name</xsl:param>
98 <xsl:param name="serviceName">service-name</xsl:param>
99 <!-- process the nodes and documents together -->
100
101 <table>
102 <tr valign='top'>
103 <xsl:for-each select='classifierNode|documentNode'>
104 <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
105 </xsl:for-each>
106 </tr>
107 <tr valign='top'>
108 <xsl:for-each select='classifierNode|documentNode'>
109 <td><xsl:text> </xsl:text></td> <!-- the empty cell for the icon -->
110 <xsl:choose><xsl:when test='name()="classifierNode" and classifierNode|documentNode'>
111 <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>
112 </xsl:when>
113 <xsl:otherwise>
114 <td><xsl:text> </xsl:text></td>
115 </xsl:otherwise>
116 </xsl:choose>
117 </xsl:for-each>
118 </tr>
119 </table>
120 <xsl:call-template name="greenBar"/>
121 </xsl:template>
122
123 <xsl:template match="classifier" mode="horizontal-false">
124 <xsl:param name="collName">coll-name</xsl:param>
125 <xsl:param name="serviceName">service-name</xsl:param>
126 <!-- process the nodes and documents separately-->
127
128 <table width='537'><tr valign='top'>
129 <xsl:for-each select='classifierNode'>
130 <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
131 </xsl:for-each></tr>
132 <tr valign='top'>
133 <xsl:for-each select='classifierNode'>
134 <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>
135 </table>
136 <table width='537'>
137 <xsl:for-each select='//documentNode'>
138 <tr valign='top'><xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
139 </xsl:for-each>
140 </table>
141 <xsl:call-template name="greenBar"/>
142 </xsl:template>
143
144<xsl:template match="documentNode">
145<xsl:param name="collName">coll-name</xsl:param>
146<xsl:variable name='library' select='ancestor::page/pageExtra/config/library_name'/>
147<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>
148</xsl:template>
149
150 <!-- icon + title -->
151 <xsl:template match="classifierNode">
152 <xsl:param name="collName">coll-name</xsl:param>
153 <xsl:param name="serviceName">service-name</xsl:param>
154 <xsl:variable name="library" select="ancestor::page/pageExtra/config/library_name"/>
155 <td><a><xsl:attribute name='href'><xsl:value-of select='$library'/>?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:if test="parent::node()[@orientation='horizontal']">&amp;sib=1</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>
156 </xsl:template>
157
158 <!-- the title is a link: an alternative template -->
159 <!--
160 <xsl:template match="classifierNode">
161 <xsl:param name="collName">coll-name</xsl:param>
162 <xsl:param name="serviceName">service-name</xsl:param>
163 <xsl:variable name="library" select="ancestor::page/pageExtra/config/library_name"/>
164 <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>
165 </xsl:template>
166 -->
167
168<!-- processing for the recursive bit -->
169<!-- if interleave=true, process all child nodes and documents, else just do nodes -->
170
171
172 <xsl:template match="classifierNode" mode="process-all-children">
173 <xsl:param name="collName">coll-name</xsl:param>
174 <xsl:param name="serviceName">service-name</xsl:param>
175 <td><p/>
176 <!-- only do this if there are children -->
177 <xsl:if test="classifierNode|documentNode">
178 <xsl:choose>
179 <xsl:when test='@orientation="vertical"'>
180 <table>
181 <xsl:for-each select='classifierNode|documentNode'>
182 <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>
183 <xsl:if test='name()="classifierNode"'>
184 <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>
185 </xsl:if>
186 </xsl:for-each>
187 </table>
188 </xsl:when>
189 <xsl:otherwise> <!-- horizontal -->
190 <table>
191 <tr valign='top'>
192 <xsl:for-each select='classifierNode|documentNode'>
193 <xsl:apply-templates select='.'><xsl:with-param name='collName' select='$collName'/><xsl:with-param name='serviceName' select='$serviceName'/></xsl:apply-templates>
194 <xsl:if test='name()="classifierNode"'>
195 <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>
196 </xsl:if>
197 </xsl:for-each>
198 </tr>
199 </table>
200 </xsl:otherwise>
201 </xsl:choose>
202 </xsl:if>
203 </td>
204 </xsl:template>
205
206 <xsl:template match="classifierNode" mode="process-node-children">
207 <xsl:param name="collName">coll-name</xsl:param>
208 <xsl:param name="serviceName">ClassifierBrowse</xsl:param>
209 <td><p/>
210 <xsl:if test='classifierNode'><!-- only do this if there are child nodes - netscape craps out at an empty table like <table /> -->
211 <xsl:choose>
212 <xsl:when test='@orientation="vertical"'>
213 <table>
214 <xsl:for-each select='classifierNode'>
215 <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>
216 <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>
217 </xsl:for-each>
218 </table>
219 </xsl:when>
220 <xsl:otherwise>
221 <table>
222 <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>
223 <xsl:apply-templates select='classifierNode' mode='process-node-children'><xsl:with-param name='collName' select='$collName'/></xsl:apply-templates></tr>
224 </table>
225 </xsl:otherwise>
226 </xsl:choose>
227 </xsl:if>
228 </td>
229 </xsl:template>
230
231</xsl:stylesheet>
232
233
234
235
236
237
Note: See TracBrowser for help on using the repository browser.