root/main/trunk/greenstone3/web/interfaces/default/transform/gslib.xsl @ 33093

Revision 33093, 43.1 KB (checked in by davidb, 15 months ago)

changed right-arrow to be specified using literal UTF8 char so it renders correctly if displayed in the title of browser-tab

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4  xmlns:xslt="http://www.w3.org/1999/XSL/Transform"
5  xmlns:gslib="http://www.greenstone.org/XSL/Library"
6  xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
7  xmlns:util="http://org.greenstone.gsdl3.util.XSLTUtil"
8  xmlns:gs3="http://www.greenstone.org/gs3"
9  xmlns:xlink="http://www.w3.org/1999/xlink"
10  xmlns:gsvar="http://www.greenstone.org/skinning-var"
11   exclude-result-prefixes="util xalan gslib gsf xslt gs3 gsvar xlink">
12<!-- all namespaces used by greenstone should be defined here and listed in exclude-result-prefixes, including those in core/transform/preProcess.xsl, otherwise xmlns attributes will be included in the html output -->
13
14  <!-- force lower priority on xsl:output, so other files like rss.xsl can override with their own xsl:output stmt
15    If other files don't specify any, gslib.xsl specifies html output as default and defines a loose DOCTYPE for it. -->
16  <xsl:import href="html-output.xsl" />
17
18  <xsl:include href="xml-to-string.xsl"/>
19   
20  <!-- some global parameters - these are set by whoever is invoking the transformation
21  Any servlet init parameters can be accessed by adding a param here-->
22  <xsl:param name="interface_name"/>
23  <xsl:param name="library_name"/>
24  <xsl:param name="site_name"/>
25  <xsl:param name="use_client_side_xslt"/>
26  <xsl:param name="filepath"/>
27  <xsl:param name="google_tracking_id"/>
28  <!-- every pages ....................................................................... -->
29
30  <xsl:template name="siteName">
31    <xsl:value-of select="/page/pageResponse/displayItemList/displayItem[@name='siteName']"/>
32  </xsl:template>
33
34  <xsl:template name="siteDescription">
35    <xsl:value-of select="/page/pageResponse/displayItemList/displayItem[@name='siteDescription']"/>
36  </xsl:template>
37
38  <xsl:template name="siteLink">
39    <a href="./{$library_name}">
40      <xsl:call-template name="siteName"/>
41    </a>
42    <xsl:text> </xsl:text>
43  </xsl:template>
44 
45  <xsl:variable name="a">
46    <xsl:value-of select="/page/pageRequest/paramList/param[@name='a']/@value"/>
47  </xsl:variable>
48 
49  <xsl:variable name="collections" select="/page/pageResponse/collectionList/collection"/>
50 
51  <xsl:variable name="berrybasketswitch">
52    <xsl:value-of select="/page/pageRequest/paramList/param[@name='berrybasket']/@value"/>
53  </xsl:variable>
54 
55  <xsl:variable name="berryBasketOn" select="/page/pageRequest/paramList/param[@name='berrybasket' and @value='on']"/>
56  <xsl:variable name="documentBasketOn" select="/page/pageRequest/paramList/param[@name='documentbasket' and @value='on']"/>
57 
58    <xsl:variable name="thisCollectionEditor">
59        <xsl:value-of select="/page/pageRequest/paramList/param[@name = 'c']/@value"/>
60        <xsl:text>-collection-editor</xsl:text>
61    </xsl:variable>
62 
63  <!-- template to get the name of the current collection -->
64  <xsl:template name="collectionName">
65    <xsl:choose>
66      <xsl:when test="/page/pageResponse/collection/displayItemList/displayItem[@name='name']">
67        <xsl:value-of select="/page/pageResponse/collection/displayItemList/displayItem[@name='name']"/>
68      </xsl:when>
69      <xsl:when test="/page/pageResponse/collection/@name">
70    <xsl:value-of select="/page/pageResponse/collection/@name"/>
71      </xsl:when>
72    </xsl:choose>
73  </xsl:template>
74
75    <!-- template to get the name of the current collection or 'all collections' if not in a specific collection -->
76    <xsl:template name="collectionNameOrAll">
77    <xsl:choose>
78      <xsl:when test="/page/pageResponse/collection">
79        <xsl:value-of select="/page/pageResponse/collection/displayItemList/displayItem[@name='name']"/>
80      </xsl:when>
81      <xsl:otherwise>All Collections</xsl:otherwise>
82    </xsl:choose>
83  </xsl:template>
84
85  <xsl:template name="collectionNameShort">
86    <xsl:value-of select="/page/pageResponse/collection/@name"/>
87  </xsl:template>
88  <xsl:template name="collectionNameLinked">
89    <xsl:if test="/page/pageResponse/collection">
90      <a>
91        <xsl:attribute name="href">./<xsl:value-of select="$library_name"/>/collection/<xsl:call-template name="collectionNameShort"/>/page/about</xsl:attribute>
92        <xsl:call-template name="collectionName"/>
93      </a>
94    </xsl:if>
95  </xsl:template>
96 
97  <xsl:template name="collectionMeta">
98    <xsl:param name="name"/>
99    <xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name=$name]"/>
100  </xsl:template>
101
102  <!-- text to get the name of the current service ("Browse","Search" etc) -->
103  <xsl:template name="serviceName">
104    <xsl:value-of select="/page/pageResponse/service/displayItem[@name='name']"/>
105  </xsl:template>
106 
107  <xsl:template name="textDirectionAttribute">
108    <xsl:attribute name="dir">
109      <xsl:choose>
110        <xsl:when test="/page/@lang='ar' or /page/@lang='fa' or /page/@lang='he' or /page/@lang='ur' or /page/@lang='ps' or /page/@lang='prs'">rtl</xsl:when>
111        <xsl:otherwise>ltr</xsl:otherwise>
112      </xsl:choose>
113    </xsl:attribute>
114  </xsl:template>
115 
116  <xsl:template name="actionClass">
117    <xsl:attribute name="class"><xsl:value-of select="/page/pageRequest/@action"/>Action <xsl:if test="/page/pageRequest/@subaction"><xsl:value-of select="/page/pageRequest/@subaction"/>Subaction</xsl:if></xsl:attribute>
118  </xsl:template>
119  <!-- username, if logged in -->
120  <!--
121    <xsl:template name="username">
122        <xsl:if test="$un_s!=''">
123            <xsl:if test="$asn!='' and $asn!='0'">
124            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.username')"/>  :  <xsl:value-of select="$un_s"/>
125            </xsl:if>
126        </xsl:if>
127    </xsl:template>
128    -->
129  <xsl:template name="defaultDividerBar">
130    <xsl:param name="text"/>
131    <xsl:choose>
132      <xsl:when test="$text">
133        <div class="divbar">
134          <xsl:value-of select="$text"/>
135        </div>
136      </xsl:when>
137      <xsl:otherwise>
138        <div class="divbar">
139          <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
140        </div>
141      </xsl:otherwise>
142    </xsl:choose>
143  </xsl:template>
144 
145  <xsl:template match="error">
146    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'error')"/> <xsl:value-of select="."/>
147  </xsl:template>
148  <xsl:template name="displayErrorsIfAny">
149    <xsl:if test="descendant::error">
150      <script language="Javascript">
151        <xsl:text disable-output-escaping="yes">
152      function removeAllChildren(node) {
153        while (node.hasChildNodes()) {
154          node.removeChild(node.firstChild);
155        }
156      }
157
158      function toggleHideError(obj) {
159        if (obj.style.display == "none") {
160          obj.style.display = "";
161          hide_link = document.getElementById("hide");
162          removeAllChildren(hide_link);
163          hide_link.appendChild(document.createTextNode("</xsl:text>
164        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'hide_error')"/>
165        <xsl:text disable-output-escaping="yes">"));
166        } else {
167          obj.style.display = "none";
168          hide_link = document.getElementById("hide");
169          removeAllChildren(hide_link);
170          hide_link.appendChild(document.createTextNode("</xsl:text>
171        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'show_error')"/>
172        <xsl:text disable-output-escaping="yes">"));
173        }
174      }
175    </xsl:text>
176      </script>
177      <p align="right">
178        <a id="hide" href="javascript:toggleHideError(error);">
179          <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'show_error')"/>
180        </a>
181      </p>
182      <div id="error" style="display: none;">
183        <xsl:apply-templates select="descendant::error"/>
184      </div>
185    </xsl:if>
186  </xsl:template>
187 
188  <xsl:template name="noTextBar">
189    <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text><!-- could also be expressed &#160; -->
190  </xsl:template>
191 
192  <xsl:template name="poweredByGS3TextBar">
193    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'gs3power')"/>
194  </xsl:template>
195 
196  <xsl:template name="rightArrow">
197    <xsl:text disable-output-escaping="yes"> » </xsl:text> <!-- could also be expressed &amp;raquo; or &#187; but prefer literal UTF8 char so it renders correctly if used in title of browser-tab -->
198  </xsl:template>
199 
200  <!-- site home ....................................................................... -->
201  <xsl:template name="siteHomePageTitle">
202    <!-- put a space in the title in case the actual value is missing - mozilla will not display a page with no title-->
203    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'gsdl')"/>
204    <xsl:text> </xsl:text>
205  </xsl:template>
206 
207  <xsl:template name="selectACollectionTextBar">
208    <xsl:choose>
209      <xsl:when test="/page/pageResponse/groupList/group and /page/pageResponse/collectionList/collection">
210      <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.select_a_collection_or_group')"/>
211      </xsl:when>
212      <xsl:when test="/page/pageResponse/groupList/group">
213    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.select_a_group')"/>
214      </xsl:when>
215      <xsl:when test="/page/pageResponse/collectionList/collection">
216    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.select_a_collection')"/>
217      </xsl:when>
218      <xsl:otherwise>
219    <xsl:choose>
220      <xsl:when test="/page/pageResponse/pathList/group">
221        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.no_collections_group')"/>
222      </xsl:when>
223      <xsl:otherwise>
224        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.no_collections')"/>
225      </xsl:otherwise>
226    </xsl:choose>
227      </xsl:otherwise>
228    </xsl:choose>
229  </xsl:template>
230 
231  <xsl:template name="crossCollectionQuickSearchForm">
232    <xsl:apply-templates select="serviceList/service[@name='TextQuery']"/>
233  </xsl:template>
234 
235  <xsl:template match="service[@name='TextQuery']">
236    <form name="QuickSearch" method="get" action="{$library_name}">
237      <input type="hidden" name="a" value="q"/>
238      <input type="hidden" name="rt" value="rd"/>
239      <input type="hidden" name="s" value="{@name}"/>
240      <xsl:choose>
241        <xsl:when test="/page/pageRequest/paramList/param[@name='group']/@value">
242            <input type="hidden" name="s1.group">
243                <xsl:attribute name="value">
244                    <xsl:value-of select="/page/pageRequest/paramList/param[@name='group']/@value" />
245                </xsl:attribute>
246            </input>
247        </xsl:when>
248        <xsl:otherwise>
249            <input type="hidden" name="s1.collection" value="all" />
250        </xsl:otherwise>
251      </xsl:choose>
252      <input type="text" name="s1.query" size="20"/>
253      <input type="submit">
254        <xsl:attribute name="value">
255          <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.quick_search')"/>
256        </xsl:attribute>
257      </input>
258    </form>
259  </xsl:template>
260 
261  <xsl:template name="groupName">
262    <xsl:param name="path"/>
263    <xsl:value-of select="/page/pageResponse/pathList/group[@path=$path]/title"/>
264  </xsl:template>
265  <xsl:template name="groupDescription">
266    <xsl:param name="path"/>
267    <xsl:value-of select="/page/pageResponse/pathList/group[@path=$path]/description"/>
268  </xsl:template>
269
270  <xsl:template name="groupHref">
271    <xsl:param name="path"/>
272    <xsl:value-of select="$library_name"/>/group/<xsl:value-of select="@path"/>
273  </xsl:template>
274
275  <xsl:template name="groupLinkWithImage">
276    <xsl:variable name="desc"><xsl:value-of select="description"/></xsl:variable>
277    <xsl:variable name="group_href"><xsl:value-of select="$library_name"/>/group/<xsl:if test="/page/pageRequest/paramList/param[@name='group']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='group']/@value"/>/</xsl:if><xsl:value-of select="@name"/></xsl:variable>
278   
279    <xsl:choose>
280      <xsl:when test="util:checkFileExistence($site_name, backgroundImage)">
281        <a href="{$group_href}" title="{$desc}">
282          <img class="groupLinkImage">
283            <xsl:attribute name="alt"><xsl:value-of select="displayItemList/displayItem[@name='name']"/></xsl:attribute>
284            <xsl:attribute name="src">sites/<xsl:value-of select="$site_name"/>/<xsl:value-of select="backgroundImage"/></xsl:attribute>
285          </img>
286        </a>
287      </xsl:when>
288      <xsl:otherwise>
289        <a href="{$group_href}" title="{$desc}">
290          <div class="groupLink ui-corner-all">
291            <div class="groupLinkText ui-widget-content ui-corner-top">
292                <xsl:choose>
293                    <xsl:when test="boolean(title)">
294                        <xsl:value-of select="title"/>
295                    </xsl:when>
296                    <xsl:otherwise>
297                        <xsl:value-of select="@name"/>
298                    </xsl:otherwise>
299                </xsl:choose>
300            </div>
301            <div style="height:15px;" class="ui-state-default ui-corner-bottom"><xsl:text> </xsl:text></div>
302          </div>
303        </a>
304      </xsl:otherwise>
305    </xsl:choose>
306  </xsl:template>
307 
308  <xsl:template name="collectionLinkWithImage">
309    <xsl:variable name="desc"><xsl:value-of select="displayItemList/displayItem[@name='shortDescription']"/></xsl:variable>
310    <xsl:variable name="coll_href"><xsl:value-of select="$library_name"/>/collection/<xsl:if test="/page/pageRequest/paramList/param[@name='group']"><xsl:value-of select="/page/pageRequest/paramList/param[@name='group']/@value"/>/</xsl:if><xsl:value-of select="@name"/>/page/about<xsl:choose><xsl:when test="libraryParamList/param">?<xsl:for-each select="libraryParamList/param"><xsl:value-of select="@name"/>=<xsl:value-of select="@default"/>&amp;</xsl:for-each></xsl:when></xsl:choose></xsl:variable>
311    <xsl:choose>
312      <xsl:when test="displayItemList/displayItem[@name='smallicon']">
313        <a href="{$coll_href}" title="{$desc}">
314          <img class="collectionLinkImage">
315            <xsl:attribute name="alt"><xsl:value-of select="displayItemList/displayItem[@name='name']"/></xsl:attribute>
316            <xsl:attribute name="src">sites/<xsl:value-of select="$site_name"/>/collect/<xsl:value-of select="@name"/>/images/<xsl:value-of select="displayItemList/displayItem[@name='smallicon']"/></xsl:attribute>
317          </img>
318        </a>
319      </xsl:when>
320      <xsl:otherwise>
321        <a href="{$coll_href}" title="{$desc}">
322          <div class="collectionLink ui-corner-all">
323            <div class="collectionLinkText ui-widget-content ui-corner-top">
324                <xsl:choose><xsl:when test="displayItemList/displayItem[@name='name']"><xsl:value-of select="displayItemList/displayItem[@name='name']"/></xsl:when>
325                <xsl:otherwise>
326                  <xsl:value-of select="@name"/>
327                </xsl:otherwise>
328                  </xsl:choose>
329                 
330            </div>
331            <div style="height:15px;" class="ui-state-default ui-corner-bottom"><xsl:text> </xsl:text></div>
332          </div>
333        </a>
334      </xsl:otherwise>
335    </xsl:choose>
336  </xsl:template>
337 
338  <xsl:template name="serviceClusterList">
339    <xsl:apply-templates select="serviceClusterList"/>
340  </xsl:template>
341 
342  <xsl:template match="serviceClusterList">
343    <xsl:for-each select="serviceCluster">
344      <a href="{$library_name}?a=p&amp;sa=about&amp;c={@name}">
345        <xsl:value-of select="@name"/>
346        <xsl:value-of select="displayItemList/displayItem[@name='name']"/>
347      </a>
348    </xsl:for-each>
349  </xsl:template>
350 
351  <xsl:template name="serviceLink">
352    <div class="paramLabel">
353      <a href="{$library_name}?a=q&amp;rt=d&amp;s={@name}">
354        <xsl:value-of select="displayItem[@name='name']"/>
355      </a>
356    </div>
357    <div class="paramValue">
358      <xsl:value-of select="displayItem[@name='description']"/>
359    </div>
360    <br class="clear"/>
361  </xsl:template>
362 
363  <xsl:template name="authenticationLink">
364    <xsl:for-each select="//serviceList/service[@type='authen']">
365        <div class="paramLabel">
366            <a href="{$library_name}/admin/ListUsers">
367                <xsl:value-of select="displayItem[@name='name']"/>
368            </a>
369        </div>
370        <div class="paramValue">
371            <xsl:value-of select="displayItem[@name='description']"/>
372        </div>
373    </xsl:for-each>
374  </xsl:template>
375
376  <xsl:template name="registerLink">
377    <xsl:for-each select="//serviceList/service[@type='authen']">
378        <div class="paramLabel">
379            <a href="{$library_name}/admin/Register"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.register')"/>
380            </a>
381        </div>
382        <div class="paramValue">
383<xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'authen.register_as_new')"/>
384        </div>
385    </xsl:for-each>
386  </xsl:template>
387
388  <xsl:template name="aboutGreenstoneLink">
389
390    <div class="paramLabel">
391      <a href="{$library_name}?a=p&amp;sa=gsdl"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'gsdl.title')"/></a>
392  </div>
393  <div class="paramValue">
394    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'gsdl.brief')"/>
395  </div>
396  </xsl:template>
397
398  <xsl:template name="libraryInterfaceLink">
399    <div class="paramLabel">
400      <!--
401        Using HTML5 download attribute to anchor tag, providing download-as-filename value, so Gli App JNLP file downloads.
402        Seems we don't need to set the MIME type for downloaded JNLP to launch, if program associations are correctly set up.
403      -->
404      <a href="{$library_name}?a=p&amp;sa=gli4gs3" download="GLIappWebStart.jnlp">
405        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.librarian_interface')"/>
406      </a>
407    </div>
408    <div class="paramValue">
409      <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home.gliapp_webstart')"/>
410    </div>
411  </xsl:template>
412 
413  <xsl:template name="greenstoneLogoAlternateText">
414    <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'gsdl')"/>
415  </xsl:template>
416 
417  <!-- about page - collection home ....................................................................... -->
418  <xsl:variable name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/>
419  <xsl:variable name="httpPath" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
420  <xsl:variable name="siteName" select="$site_name"/>
421  <!--
422      Already defined above as a variable, not sure why if way being defined here again as a 'param'
423      <xsl:param name="collName" select="/page/pageRequest/paramList/param[@name='c']/@value"/>
424      -->
425  <xsl:param name="pageType"/>
426  <xsl:variable name="this-element" select="/page/pageResponse/collection|/page/pageResponse/serviceCluster"/>
427  <xsl:variable name="this-service" select="/page/pageRequest/paramList/param[@name = 's']/@value"/>
428
429<!-- 
430_httpimages_ {_httpweb_/images}
431_httpscript_ {_httpweb_/script}
432_httpstyle_ {_httpweb_/style}
433_httpflash_ {_httpweb_/flash}
434_httpjava_ {_httpweb_/java}
435-->
436
437
438  <xsl:template name="define-js-variable">
439    <xsl:param name="name"/>
440    <xsl:param name="value"/>
441    <script type="text/javascript">
442      gs.variables[<xslt:text disable-output-escaping="yes">"</xslt:text><xsl:value-of select="$name"/><xslt:text disable-output-escaping="yes">"</xslt:text>]
443      <xslt:text disable-output-escaping="yes"> = "</xslt:text>
444      <xsl:value-of select="$value"/>
445      <xslt:text disable-output-escaping="yes">";</xslt:text>
446    </script>
447  </xsl:template>
448
449  <xsl:variable name="_httpcollection_" select="$httpPath"/>
450  <xsl:variable name="_httpbrowse_"><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collName"/>/browse</xsl:variable>
451  <xsl:variable name="_httpquery_"><xsl:value-of select="$library_name"/>/collection/<xsl:value-of select="$collName"/>/search</xsl:variable>
452
453  <xsl:template name="define-js-macro-variables">
454
455    <xsl:call-template name="define-js-variable">
456      <xsl:with-param name="name"  select="'_httpbrowse_'"/>
457      <xsl:with-param name="value" select="$_httpbrowse_"/>
458    </xsl:call-template>
459
460    <xsl:call-template name="define-js-variable">
461      <xsl:with-param name="name"  select="'_httpquery_'"/>
462      <xsl:with-param name="value" select="$_httpquery_"/>
463    </xsl:call-template>
464
465  </xsl:template>
466
467
468  <xsl:template name="aboutCollectionPageTitle">
469    <!-- put a space in the title in case the actual value is missing - mozilla will not display a page with no title-->
470    <xsl:value-of select="/page/pageResponse/collection/displayItemList/displayItem[@name='name']"/>
471    <xsl:text> </xsl:text>
472  </xsl:template>
473 
474  <xsl:template name="collectionHomeLinkWithLogoIfAvailable">
475    <a href="{$library_name}?a=p&amp;sa=about&amp;c={$collName}">
476      <xsl:choose>
477        <xsl:when test="$this-element/displayItemList/displayItem[@name='icon']">
478          <img border="0">
479            <xsl:attribute name="src"><xsl:value-of select="$this-element/metadataList/metadata[@name='httpPath']"/>/images/<xsl:value-of select="$this-element/displayItemList/displayItem[@name='icon']"/></xsl:attribute>
480            <xsl:attribute name="alt">
481              <xsl:value-of select="$this-element/displayItemList/displayItem[@name='name']"/>
482            </xsl:attribute>
483            <xsl:attribute name="title">
484              <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'aboutpage')"/>
485            </xsl:attribute>
486          </img>
487        </xsl:when>
488        <xsl:otherwise>
489          <xsl:value-of select="$this-element/displayItemList/displayItem[@name='name']"/>
490        </xsl:otherwise>
491      </xsl:choose>
492    </a>
493  </xsl:template>
494 
495  <xsl:template name="homeButtonTop">
496    <a href="{$library_name}?a=p&amp;sa=home">
497      <xsl:attribute name="title">
498        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home_tip')"/>
499      </xsl:attribute>
500      <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'home_b')"/>
501    </a>
502  </xsl:template>
503 
504  <xsl:template name="helpButtonTop">
505    <xsl:choose>
506      <xsl:when test="$pageType='help'">
507        <li>
508          <a>
509            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'help_b')"/>
510          </a>
511        </li>
512      </xsl:when>
513      <xsl:otherwise>
514        <li>
515          <a href="{$library_name}?a=p&amp;sa=help&amp;c={$collName}">
516            <xsl:attribute name="title">
517              <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'help_tip')"/>
518            </xsl:attribute>
519            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'help_b')"/>
520          </a>
521        </li>
522      </xsl:otherwise>
523    </xsl:choose>
524  </xsl:template>
525 
526  <xsl:template name="preferencesButtonTop">
527    <xsl:choose>
528      <xsl:when test="$pageType='pref'">
529        <li>
530          <a>
531            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_b')"/>
532          </a>
533        </li>
534      </xsl:when>
535      <xsl:otherwise>
536        <li>
537          <a href="{$library_name}?a=p&amp;sa=pref&amp;c={$collName}">
538            <xsl:attribute name="title">
539              <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_tip')"/>
540            </xsl:attribute>
541            <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'pref_b')"/>
542          </a>
543        </li>
544      </xsl:otherwise>
545    </xsl:choose>
546  </xsl:template>
547 
548  <xsl:template name="servicesNavigationBar">
549    <xsl:for-each select="$this-element/serviceList/service">
550      <xsl:variable name="action">
551        <xsl:choose>
552          <xsl:when test="@name=$this-service">CURRENT</xsl:when>
553          <xsl:when test="@type='query'">q</xsl:when>
554          <xsl:when test="@type='browse'">b</xsl:when>
555          <xsl:when test="@type='process'">pr</xsl:when>
556          <xsl:when test="@type='applet'">a</xsl:when>
557          <xsl:otherwise>DO_NOT_DISPLAY</xsl:otherwise>
558        </xsl:choose>
559      </xsl:variable>
560      <xsl:choose>
561        <xsl:when test="$action='CURRENT'">
562          <li>
563            <a>
564              <xsl:value-of select="displayItem[@name='name']"/>
565            </a>
566          </li>
567        </xsl:when>
568        <xsl:when test="$action !='DO_NOT_DISPLAY'">
569          <li>
570            <a href="{$library_name}?a={$action}&amp;rt=d&amp;s={@name}&amp;c={$collName}">
571              <xsl:if test="displayItem[@name='description']">
572                <xsl:attribute name="title">
573                  <xsl:value-of select="displayItem[@name='description']"/>
574                </xsl:attribute>
575              </xsl:if>
576              <xsl:value-of select="displayItem[@name='name']"/>
577            </a>
578          </li>
579        </xsl:when>
580      </xsl:choose>
581    </xsl:for-each>
582  </xsl:template>
583 
584  <xsl:template name="collectionDescriptionTextAndServicesLinks">
585    <xsl:apply-templates select="pageResponse/collection|serviceCluster"/>
586  </xsl:template>
587 
588  <xsl:template match="collection|serviceCluster">
589    <xsl:value-of select="displayItemList/displayItem[@name='description']" disable-output-escaping="yes"/>
590<!-- Uncomment this section if you want the collection service links and their descriptions to appear -->
591    <!--<xsl:apply-templates select="serviceList">
592      <xsl:with-param name="collName" select="$collName"/>
593    </xsl:apply-templates>-->
594  </xsl:template>
595 
596  <xsl:template match="serviceList">   
597    <xsl:param name="collName"/>
598        <h3>
599          <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'about.services')"/>
600        </h3>
601        <p>
602          <xsl:choose>
603            <xsl:when test="service">
604              <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'about.servicehelp')"/>
605            </xsl:when>
606            <xsl:otherwise>
607              <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'about.noservices')"/>
608            </xsl:otherwise>
609          </xsl:choose>
610        </p>
611        <xsl:if test="service">
612          <div id="servicelist">
613            <xsl:for-each select="service">
614              <xsl:sort select="position()" order="descending" data-type="number"/>
615              <xsl:variable name="action">
616                <xsl:choose>
617                  <xsl:when test="@type='query'">q</xsl:when>
618                  <xsl:when test="@type='process'">pr</xsl:when>
619                  <xsl:when test="@type='applet'">a</xsl:when>
620                  <xsl:otherwise>DO_NOT_DISPLAY</xsl:otherwise>
621                </xsl:choose>
622              </xsl:variable>
623              <xsl:if test="$action != 'DO_NOT_DISPLAY'">
624                <div class="paramLabel">
625                  <a href="{$library_name}?a={$action}&amp;rt=d&amp;s={@name}&amp;c={$collName}">
626                    <xsl:value-of select="displayItem[@name='name']"/>
627                  </a>
628                </div>
629                <div class="paramLabel">
630                  <xsl:value-of select="displayItem[@name='description']"/>
631                </div>
632                <br class="clear"/>
633              </xsl:if>
634            </xsl:for-each>
635          </div>
636        </xsl:if>
637
638  </xsl:template>
639 
640  <!-- classifier page ............................................................................ -->
641  <xsl:template name="collapsedNavigationTab">
642    <xsl:param name="type"/>
643    <xsl:variable name="isCurrent" select="/page/pageResponse/service[@type=$type]"/>
644    <li>
645      <xsl:if test="$isCurrent">
646        <xsl:attribute name="class">current</xsl:attribute>
647      </xsl:if>
648      <a>
649        <xsl:if test="service[@name=$type]/displayItem[@name='description']">
650          <xsl:attribute name="title">
651            <xsl:value-of select="service[@name=$type]/displayItem[@name='description']"/>
652          </xsl:attribute>
653        </xsl:if>
654        <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=q&amp;rt=d&amp;s=<xsl:value-of select="service[@type=$type]/@name"/>&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:attribute>
655        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, $type)"/>
656      </a>
657    </li>
658  </xsl:template>
659 
660  <xsl:template name="navigationTab">
661    <xsl:variable name="isCurrent" select="@name=/page/pageResponse/service/@name"/>
662    <xsl:variable name="action">
663      <xsl:choose>
664        <xsl:when test="@type='query'">q</xsl:when>
665        <xsl:when test="@type='browse'">b</xsl:when>
666        <xsl:when test="@type='process'">pr</xsl:when>
667        <xsl:when test="@type='applet'">a</xsl:when>
668        <xsl:otherwise>DO_NOT_DISPLAY</xsl:otherwise>
669      </xsl:choose>
670    </xsl:variable>
671    <xsl:if test="$action!='DO_NOT_DISPLAY'">
672      <li>
673        <xsl:if test="$isCurrent">
674          <xsl:attribute name="class">current</xsl:attribute>
675        </xsl:if>
676        <a>
677          <xsl:if test="displayItem[@name='description']">
678            <xsl:attribute name="title">
679              <xsl:value-of select="displayItem[@name='description']"/>
680            </xsl:attribute>
681          </xsl:if>
682          <xsl:choose>
683            <xsl:when test="classifierList/classifier/@name">
684              <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=<xsl:value-of select="$action"/>&amp;rt=s&amp;s=<xsl:value-of select="@name"/>&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;cl=<xsl:value-of select="classifierList/classifier/@name"/></xsl:attribute>
685            </xsl:when>
686            <xsl:otherwise>
687              <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=<xsl:value-of select="$action"/>&amp;rt=d&amp;s=<xsl:value-of select="@name"/>&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:attribute>
688            </xsl:otherwise>
689          </xsl:choose>
690          <xsl:value-of select="displayItem[@name='name']"/>
691        </a>
692      </li>
693    </xsl:if>
694  </xsl:template>
695 
696  <xsl:template name="classifierLink">
697    <xsl:if test="@name=/page/pageResponse/classifier/@name">
698      <xsl:attribute name="class">current</xsl:attribute>
699    </xsl:if>
700    <a href="{$library_name}?a=b&amp;rt=r&amp;s={/page/pageResponse/service/@name}&amp;c={/page/pageResponse/collection/@name}&amp;cl={@name}">
701      <xsl:value-of select="displayItem[@name='description']"/>
702    </a>
703  </xsl:template>
704 
705  <!-- query page ............................................................................ -->
706<!--  <xsl:template name="indexName">
707    <xsl:value-of select="/page/pageResponse/service/displayItem[@name='name']"/>
708  </xsl:template>
709
710  <xsl:template name="queryPageCollectionName">
711    <xsl:choose>
712      <xsl:when test="/page/pageResponse/collection">
713        <gslib:aboutCollectionPageTitle/>
714      </xsl:when>
715      <xsl:otherwise>Cross-Collection</xsl:otherwise>
716    </xsl:choose>
717  </xsl:template>-->
718 
719  <!--
720BERRY BASKET TEMPLATES
721These get used on many different pages to add the
722berry basket function to the site
723-->
724  <!-- put the drag&drop berry basket on the page -->
725  <xsl:template name="berryBasket">
726    <xsl:if test="$berryBasketOn">
727      <div id="berrybasket" class="hide">
728        <span><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'berry.title')"/><xsl:text> </xsl:text></span>
729        <span id="berryBasketExpandCollapseLinks" style="display: none;">
730          <a id="berryBasketExpandLink" href="javascript:showBasket()"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'basket.expand')"/></a>
731          <a id="berryBasketCollapseLink" style="display: none;" href="javascript:hideBasket()"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'basket.collapse')"/></a>
732        </span>
733        <div id="baskethandle">
734          <span>
735            <xsl:text> </xsl:text>
736          </span>
737        </div>
738        <div id="berries">
739          <span>
740            <xsl:text> </xsl:text>
741          </span>
742    </div>
743    <div><a id="berryFullViewLink" style="display: none;"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'berry.full')"/></a></div>
744    <div id="berryHelpMsg"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'berry.help')"/></div>
745      </div>
746     
747    </xsl:if>
748  </xsl:template>
749 
750    <!-- put the drag&drop document basket on the page -->
751    <xsl:template name="documentBasket">
752        <xsl:if test="$documentBasketOn and /page/pageRequest/userInformation and /page/pageRequest/userInformation/@editEnabled = 'true' and (util:contains(/page/pageRequest/userInformation/@groups, 'administrator') or util:contains(/page/pageRequest/userInformation/@groups, 'all-collections-editor') or util:contains(/page/pageRequest/userInformation/@groups, $thisCollectionEditor))">
753            <div id="documentbasket" class="hide">
754                <span><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'db.doc_basket')"/><xsl:text> </xsl:text></span>
755                <span id="documentBasketExpandCollapseLinks" style="display: none;">
756                    <a id="documentBasketExpandLink" href="javascript:showDocumentBox()"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'basket.expand')"/></a>
757                    <a id="documentBasketCollapseLink" style="display: none;" href="javascript:hideDocumentBox()"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'basket.collapse')"/></a>
758                </span>
759                <div id="documenthandle">
760                    <span>
761                        <xsl:text> </xsl:text>
762                    </span>
763                </div>
764                <div id="documentpages">
765                    <span>
766                        <xsl:text> </xsl:text>
767                    </span>
768                </div>
769                <div>
770                    <a href="javascript:clearBasket();"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'basket.clear')"/></a>
771                </div>
772            </div>
773        </xsl:if>
774    </xsl:template>
775 
776  <!-- include the required javascript and css for berry baskets -->
777  <xsl:template name="berryBasketHeadTags">
778    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/yahoo-min.js"><xsl:text> </xsl:text></script>
779    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/event-min.js"><xsl:text> </xsl:text></script>
780    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/connection-min.js"><xsl:text> </xsl:text></script>
781    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/dom-min.js"><xsl:text> </xsl:text></script>
782    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/dragdrop-min.js"><xsl:text> </xsl:text></script>
783    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/cookie-min.js"><xsl:text> </xsl:text></script>
784    <script type="text/javascript" src="interfaces/{$interface_name}/js/yui/animation-min.js"><xsl:text> </xsl:text></script>
785   
786    <script type="text/javascript" src="interfaces/{$interface_name}/js/berrybasket/ygDDPlayer.js"><xsl:text> </xsl:text></script>
787    <script type="text/javascript" src="interfaces/{$interface_name}/js/berrybasket/ygDDOnTop.js"><xsl:text> </xsl:text></script>
788    <script type="text/javascript" src="interfaces/{$interface_name}/js/berrybasket/berrybasket.js"><xsl:text> </xsl:text></script>
789    <link rel="stylesheet" href="interfaces/{$interface_name}/style/berry.css" type="text/css"/>
790   
791    <!-- Combo-handled YUI CSS files: -->
792    <link rel="stylesheet" type="text/css" href="interfaces/{$interface_name}/style/skin.css"/>
793
794    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/documentbasket.js"><xsl:text> </xsl:text></script>
795    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/documentBasketDragDrop.js"><xsl:text> </xsl:text></script>
796    <!-- Combo-handled YUI JS files: -->
797    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/yahoo-dom-event.js"><xsl:text> </xsl:text></script>
798    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/container_core-min.js"><xsl:text> </xsl:text></script>
799    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/element-min.js"><xsl:text> </xsl:text></script>
800    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/menu-min.js"><xsl:text> </xsl:text></script>
801    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/button-min.js"><xsl:text> </xsl:text></script>
802    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/editor-min.js"><xsl:text> </xsl:text></script>
803    <script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/yuiloader-min.js"><xsl:text> </xsl:text></script>
804    <!--<script type="text/javascript" src="interfaces/{$interface_name}/js/documentbasket/editor-dialog.js"><xsl:text> </xsl:text></script>-->
805    <link rel="stylesheet" href="interfaces/{$interface_name}/style/documentbasket.css" type="text/css"/>
806  </xsl:template>
807 
808  <!--
809create a little berry which can be drag&dropped onto the berry basket
810used on classifier and search result pages
811-->
812  <xsl:template name="documentBerryForClassifierOrSearchPage">
813    <xsl:if test="$berryBasketOn">
814      <img class="pick" src="interfaces/{$interface_name}/images/berry.png" alt="in basket" width="15" height="15" border="0">
815        <xsl:attribute name="id"><xsl:value-of select="/page/pageResponse/collection/@name"/>:<xsl:value-of select="@nodeID"/></xsl:attribute>
816      </img>
817    </xsl:if>
818  </xsl:template>
819 
820  <!--
821create little berrys which can be drag&dropped onto the berry basket
822used on the document page
823-->
824  <xsl:template name="documentBerryForDocumentPage">
825    <xsl:variable name="selectedNode">
826      <xsl:value-of select="/page/pageResponse/document/@selectedNode"/>
827    </xsl:variable>
828    <xsl:variable name="rootNode">
829      <xsl:value-of select="/page/pageResponse/document/documentNode[@nodeType='root']/@nodeID"/>
830    </xsl:variable>
831    <xsl:if test="$berryBasketOn">
832      <div id="documentberries">
833        <img class="pick" id="{/page/pageResponse/collection/@name}:{$rootNode}" src="interfaces/{$interface_name}/images/berry.png" alt="in basket" width="15" height="15" border="0"/>
834        <span id="{/page/pageResponse/collection/@name}:{$rootNode}:root" class="documentberry">the whole document</span>
835        <!--<xsl:if test="$selectedNode != $rootNode">
836          <img class="pick" id="{/page/pageResponse/collection/@name}:{$selectedNode}" src="interfaces/{$interface_name}/images/berry.png" alt="in basket" width="15" height="15" border="0"/>
837          <span id="{/page/pageResponse/collection/@name}:{$selectedNode}:section" class="documentberry">the current section</span>
838        </xsl:if>-->
839      </div>
840    </xsl:if>
841  </xsl:template>
842 
843  <!-- document page -->
844  <xsl:template name="documentTitle">
845    <xsl:value-of select="/page/pageResponse/document/documentNode/metadataList/metadata[@name='Title']"/>
846  </xsl:template>
847  <xsl:template name="coverImage">
848    <img>
849      <xsl:attribute name="src"><xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>/index/assoc/<xsl:value-of select="metadataList/metadata[@name='assocfilepath']"/>/cover.jpg</xsl:attribute>
850    </img>
851  </xsl:template>
852 
853  <xsl:template name="previousNextButtons">
854    <!-- prev -->
855    <a>
856      <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;d=<xsl:value-of select="@selectedNode"/>.pp&amp;sib=1&amp;p.s=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.s']/@value"/>&amp;p.sa=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.sa']/@value"/>&amp;p.a=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.a']/@value"/></xsl:attribute>
857      <img class="lessarrow" src="interfaces/{$interface_name}/images/previous.png"/>
858    </a>
859    <!-- next -->
860    <a>
861      <xsl:attribute name="href"><xsl:value-of select="$library_name"/>?a=d&amp;c=<xsl:value-of select="/page/pageResponse/collection/@name"/>&amp;d=<xsl:value-of select="@selectedNode"/>.np&amp;sib=1&amp;p.s=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.s']/@value"/>&amp;p.sa=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.sa']/@value"/>&amp;p.a=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.a']/@value"/></xsl:attribute>
862      <img class="morearrow" src="interfaces/{$interface_name}/images/next.png"/>
863    </a>
864  </xsl:template>
865
866
867  <!-- This next template expands gslib:langfrag (used by document.xsl and documentbasket.xsl).
868       When debugging with o=skinandlibdoc, it's seen that <gslib:langfrag name='dse' /> gets expanded to:
869       <xsl:call-template name="langfrag">
870     <xsl:with-param name="name">dse</xsl:with-param>
871       </xsl:call-template>
872       Before the param can be used in this template, need to retrieve it by name with <xsl:param/>
873       as explained in http://www.maconstateit.net/tutorials/XML/XML05/xml05-05.aspx
874       -->
875  <xsl:template name="langfrag">
876    <xsl:param name="name"/>
877    <script type="text/javascript">
878      <xsl:value-of disable-output-escaping="yes" select="util:getInterfaceStringsAsJavascript($interface_name, /page/@lang, $name)"/>
879    </script>
880  </xsl:template>
881
882
883  <!-- builds up links to available document types equivalent to the default source
884       document with as anchor the equivalent documents' doctype icons. -->
885  <xsl:template name="equivDocLinks">
886    <xsl:param name="count"/>
887
888      <xsl:variable name="docicon" select="metadataList/metadata[contains(@name, 'equivDocIcon')]"/>
889      <xsl:variable name="docEndlink" select="metadataList/metadata[contains(@name, '/equivDocLink')]"/>
890
891      <!--<xsl:variable name="docStartlink" select="metadataList/metadata[contains(@name, 'all_*,*_equivDocLink')]"/>-->   
892      <!-- In the following variable statement, we're trying to set the docStartlink to any metadata whose value
893    ends on equivDocLink but NOT /equivDocLink. Unfortunately, the xslt function fn:ends-with only exists from
894    xslt 2.0 onwards. So need to use substring() and string-lenth() functions now to check whether the 13th char
895    from the end is a slash or not, in order to distinguish between the start of a doclink and end of one.
896    If this 13th char from the end is not a slash, then we found (the string we want to store in) docStartlink. -->
897      <xsl:variable name="docStartlink">
898    <xsl:for-each select="metadataList/metadata">
899      <xsl:if test="contains(@name, 'equivDocLink')">   
900        <xsl:variable name="tmpvar" select="substring(@name, string-length(@name)-12, 1)"/>
901          <xsl:if test="not($tmpvar='/')">
902            <xsl:value-of select="self::node()[@name]"/>           
903          </xsl:if>     
904      </xsl:if>
905    </xsl:for-each>
906      </xsl:variable>
907
908      <xsl:variable name="equivDocIcon" select="java:org.greenstone.gsdl3.util.XSLTUtil.getNumberedItem($docicon, $count)" />
909      <xsl:variable name="equivStartlink" select="java:org.greenstone.gsdl3.util.XSLTUtil.getNumberedItem($docStartlink, $count)" />
910      <xsl:variable name="equivEndlink" select="java:org.greenstone.gsdl3.util.XSLTUtil.getNumberedItem($docEndlink, $count)" />
911
912      <xsl:if test="$equivDocIcon != ''">
913        <xsl:value-of disable-output-escaping="yes" select="$equivStartlink"/>
914        <xsl:value-of disable-output-escaping="yes" select="$equivDocIcon"/>
915        <xsl:value-of disable-output-escaping="yes" select="$equivEndlink"/>
916
917        <!-- recursively call this template to get multiple entries -->
918        <xsl:call-template name="equivDocLinks">
919          <xsl:with-param name="count"><xsl:value-of select="$count + 1"/></xsl:with-param>
920        </xsl:call-template>
921      </xsl:if>
922
923  </xsl:template>
924
925  <xsl:template name="expandContractDocumentLinks">
926    <!--<xsl:if test="count(//documentNode) > 1">-->
927      <xsl:variable name="doc_url"><xsl:value-of select='$library_name'/>/collection/<xsl:value-of select='/page/pageResponse/collection/@name'/>/document/<xsl:value-of select='/page/pageResponse/document/documentNode/@nodeID'/>?<xsl:if test="/page/pageRequest/paramList/param[@name='p.s']">p.s=<xsl:value-of select="/page/pageRequest/paramList/param[@name='p.s']/@value"/>&amp;</xsl:if></xsl:variable>
928      <div id="expandContractLinks"><table style="width:100%; text-align:center;"><tr><td><a href="{$doc_url}ed=1"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.expand_doc')"/></a></td><td><a href="javascript:expandOrCollapseAll(false);"><xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'doc.collapse_doc')"/></a></td></tr></table></div>
929    <!--</xsl:if>-->
930  </xsl:template>
931</xsl:stylesheet>
Note: See TracBrowser for help on using the browser.