root/main/trunk/greenstone3/web/interfaces/default/transform/config_format.xsl @ 26467

Revision 26467, 19.9 KB (checked in by kjdon, 7 years ago)

added a few new gsf templates, foreach-metadata and supporting templates

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:xslt="output.xsl"
5    xmlns:java="http://xml.apache.org/xslt/java"
6    xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
7    xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
8    extension-element-prefixes="java">
9    <xsl:param name="interface_name"/>
10    <xsl:param name="library_name"/>
11    <xsl:param name="site_name"/>
12    <xsl:param name="collName"/>
13
14    <xsl:output method="xml"/>
15    <xsl:namespace-alias stylesheet-prefix="xslt" result-prefix="xsl"/>
16
17    <xsl:template match="format">
18        <format>
19            <xsl:apply-templates/>
20        </format>
21    </xsl:template>
22
23    <xsl:template match="gsf:template">
24        <xslt:template>
25            <xsl:copy-of select="@*"/>
26            <xsl:attribute name="priority">2</xsl:attribute>
27            <xsl:if test=".//gsf:link">
28                <xslt:param name="serviceName"/>
29                <xslt:param name="collName"/>
30            </xsl:if>
31            <xsl:apply-templates/>
32        </xslt:template>
33    </xsl:template>
34
35    <xsl:template match="gsf:variable">
36        <xslt:variable>
37            <xsl:copy-of select="@*"/>
38            <xsl:apply-templates/>
39        </xslt:variable>
40        <script type="text/javascript">
41            gs.variables.<xsl:value-of select="@name"/>
42            <xslt:text disable-output-escaping="yes"> = "</xslt:text>
43            <xsl:apply-templates/>
44            <xslt:text disable-output-escaping="yes">";</xslt:text>
45        </script>
46    </xsl:template>
47
48    <xsl:template match="gsf:defaultClassifierNode">
49        <xslt:call-template name="defaultClassifierNode"/>
50    </xsl:template>
51
52
53    <xsl:template match="gsf:script[@src]">
54        <script>
55            <xsl:attribute name='src'>
56                <xsl:value-of select="@src"/>       
57            </xsl:attribute>
58            <xslt:attribute name='type'>text/javascript</xslt:attribute>
59            <xslt:comment/>
60            <!-- comment used to ensure script tag is not collapsed -->
61        </script>
62    </xsl:template>
63
64
65    <xsl:template match="gsf:script">
66        <script type="text/javascript">
67            <xslt:text disable-output-escaping="yes">
68                <xsl:apply-templates/>
69            </xslt:text>
70        </script>
71    </xsl:template>
72
73
74    <xsl:template match="gsf:style[@src]">
75        <link rel="stylesheet" type="text/css">
76            <xsl:attribute name='href'>
77                <xsl:value-of select="@src"/>       
78            </xsl:attribute>
79        </link>
80    </xsl:template>
81
82    <xsl:template match="gsf:style">
83        <style type="text/css">
84            <xsl:apply-templates/>
85        </style>
86    </xsl:template>
87
88
89    <xsl:template match="gsf:image">
90        <xslt:variable name="metaName">
91            <xsl:choose>
92                <xsl:when test="@type = 'thumb'">Thumb</xsl:when>
93                <xsl:when test="@type = 'screen'">Screen</xsl:when>
94                <xsl:when test="@type = 'source'">SourceFile</xsl:when>
95            </xsl:choose>
96        </xslt:variable>
97        <xslt:if test="(.//metadataList)[last()]/metadata[@name = $metaName]">
98            <img>
99                <xslt:attribute name='src'>
100                    <xslt:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name = 'httpPath']"/>
101                    <xsl:text>/index/assoc/</xsl:text>
102                    <xslt:value-of disable-output-escaping="yes" select="/page/pageResponse/document/metadataList/metadata[@name = 'assocfilepath']"/>
103                    <xsl:text>/</xsl:text>
104                    <xslt:value-of disable-output-escaping="yes" select="(.//metadataList)[last()]/metadata[@name = $metaName]"/>
105                </xslt:attribute>
106            </img>
107        </xslt:if>
108    </xsl:template>
109
110  <xsl:template match="params"></xsl:template>
111    <xsl:template match="gsf:link">
112
113        <xslt:variable name="collName" select="/page/pageResponse/collection/@name"/>
114        <xsl:variable name="opt-title">                 
115            <xsl:choose>
116                <xsl:when test="@title">
117                    <xslt:attribute name="title">
118                        <xsl:value-of select="@title"/>
119                    </xslt:attribute>
120                </xsl:when>
121                <xsl:when test="@titlekey">
122                    <xslt:attribute name="title">
123                        <xslt:value-of disable-output-escaping="yes" select="util:getCollectionText($collName, $site_name, /page/@lang, '{@titlekey}')"/>
124                    </xslt:attribute>
125                </xsl:when>
126            </xsl:choose>
127        </xsl:variable>
128
129        <xsl:choose>
130            <xsl:when test="@type='query'">
131                <a>
132                    <xslt:attribute name='href'>
133                        <xslt:value-of select='$library_name'/>
134                        <xsl:text>/collection/</xsl:text>
135                        <xslt:value-of select='/page/pageResponse/collection/@name'/>
136                        <xsl:text>/search/</xsl:text>
137                        <xsl:choose>
138                            <xsl:when test="@name">
139                                <xsl:value-of select="@name"/>
140                            </xsl:when>
141                            <xsl:otherwise>
142                                <xsl:text>TextQuery</xsl:text>
143                            </xsl:otherwise>
144                        </xsl:choose>
145        <xsl:if test="params">?rt=rd&amp;<xsl:copy-of select="params/node()"/></xsl:if>
146                    </xslt:attribute>
147                    <xsl:copy-of select="$opt-title"/>
148                    <xsl:apply-templates/>
149                </a>
150            </xsl:when>
151            <xsl:when test="@type='classifier'">
152                <a>
153                    <xslt:attribute name='href'>
154                        <xslt:value-of select='$library_name'/>
155                        <xsl:text>/collection/</xsl:text>
156                        <xslt:value-of select='/page/pageResponse/collection/@name'/>
157                        <xsl:text>/browse/</xsl:text>
158                        <xsl:choose>
159                            <xsl:when test="@nodeID">
160                                <xsl:value-of select="@nodeID"/>
161                            </xsl:when>
162                            <xsl:otherwise>
163                                <xslt:value-of select='util:replace(@nodeID, ".", "/")'/>
164                            </xsl:otherwise>
165                        </xsl:choose>
166                    </xslt:attribute>
167                    <xsl:copy-of select="$opt-title"/>
168                    <xsl:apply-templates/>
169                </a>
170            </xsl:when>
171            <xsl:when test="@type='source'">
172                <a>
173                    <xslt:attribute name='href'>
174                        <xslt:value-of
175                   disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']" />/index/assoc/<xslt:value-of
176                   disable-output-escaping="yes" select="(.//metadataList)[last()]/metadata[@name='assocfilepath']" />/<xslt:value-of
177                   disable-output-escaping="yes" select="(.//metadataList)[last()]/metadata[@name='srclinkFile']" />
178                    </xslt:attribute>
179                    <xsl:copy-of select="$opt-title"/>
180                    <xsl:apply-templates/>
181                </a>
182            </xsl:when>
183            <xsl:when test="@type='web'">
184                <xslt:value-of disable-output-escaping="yes" select="metadataList/metadata[contains(@name, 'weblink')]"/>
185                <xsl:apply-templates/>
186                <xslt:value-of disable-output-escaping="yes" select="metadataList/metadata[contains(@name, '/weblink')]"/>
187            </xsl:when>
188            <xsl:when test="@type='page'">
189                <a>
190                    <xslt:attribute name='href'>
191                        <xslt:value-of select='$library_name'/>
192                        <xsl:text>/collection/</xsl:text>
193                        <xslt:value-of select='/page/pageResponse/collection/@name'/>
194                        <xsl:text>/page/</xsl:text>
195                        <xsl:value-of select="@page"/>
196                    </xslt:attribute>
197                    <xsl:copy-of select="$opt-title"/>
198                    <xsl:apply-templates/>
199                </a>   
200            </xsl:when>
201            <xsl:when test="@type='equivdoc'">
202                <xsl:call-template name="gsf:equivlinkgs3"/>
203            </xsl:when>
204            <xsl:otherwise>
205                <!-- a document link -->
206                <xslt:variable name="bookswitch">
207                    <xslt:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/>
208                </xslt:variable>
209                <a>
210                    <xsl:copy-of select="$opt-title"/>
211                    <xslt:attribute name="href">
212                        <xslt:value-of select='$library_name'/>
213                        <xsl:text>/collection/</xsl:text>
214                        <xslt:value-of select='/page/pageResponse/collection/@name'/>
215                        <xsl:text>/document/</xsl:text>
216                        <xsl:choose>
217                            <xsl:when test="@OID">
218                                <xsl:value-of select="@OID"/>
219                            </xsl:when>
220                            <xsl:when test="@OIDmetadata">
221                                <xsl:variable name="OIDmeta" select="@OIDmetadata"/>
222                                <xslt:value-of select="(.//metadataList)[last()]/metadata[@name='{$OIDmeta}']"/>
223                            </xsl:when>
224                            <xsl:otherwise>
225                                <xslt:value-of select='@nodeID'/>
226                            </xsl:otherwise>
227                        </xsl:choose>
228                        <xslt:choose>
229                            <xslt:when test="$bookswitch = 'on' or $bookswitch = 'flashxml'">
230                                <xsl:text>?book=on</xsl:text>
231                            </xslt:when>
232                            <xslt:otherwise>
233                                <xslt:if test="$opt-doc-link-args">?<xslt:value-of select="$opt-doc-link-args"/>
234                                </xslt:if>
235                            </xslt:otherwise>
236                        </xslt:choose>
237                    </xslt:attribute>
238                    <xsl:apply-templates/>
239                </a>
240            </xsl:otherwise>
241        </xsl:choose>
242    </xsl:template>
243
244    <xsl:template match="gsf:icon">
245        <xsl:choose>
246            <xsl:when test="@type='classifier'">
247                <img style="border:0px">
248                    <xsl:attribute name="src">
249                        <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'bookshelf_image')"/>
250                    </xsl:attribute>
251                </img>
252            </xsl:when>
253            <xsl:when test="@type='web'">
254                <xslt:value-of disable-output-escaping="yes" select="metadataList/metadata[contains(@name, 'webicon')]"/>               
255            </xsl:when>
256            <xsl:when test="@file">
257                <img>
258                    <xslt:attribute name='src'>
259                        <xsl:choose>
260                            <xsl:when test="not(@select) or @select='site'">
261                                <xsl:value-of disable-output-escaping="yes" select="concat('interfaces/',$interface_name,'/images/',@file)"/>
262                            </xsl:when>
263                            <xsl:when test="@select='collection'">
264                                <xslt:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
265                                <xsl:value-of disable-output-escaping="yes" select="concat('/images/',@file)"/>
266                            </xsl:when>
267                        </xsl:choose>               
268                    </xslt:attribute>
269                </img>
270            </xsl:when>
271            <xsl:when test="not(@type) or @type='document'">
272                <img style="border:0px">
273                    <xslt:attribute name="id">documentBasketBook<xslt:value-of select="/page/pageResponse/collection/@name"/>:<xslt:value-of select="@nodeID"/>
274                    </xslt:attribute>
275                    <xslt:attribute name="src">
276                        <xslt:choose>
277                            <xslt:when test="@docType='hierarchy' and @nodeType='root'">
278                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'book_image')"/>
279                            </xslt:when>
280                            <xslt:otherwise>
281                                <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'page_icon_image')"/>
282                            </xslt:otherwise>
283                        </xslt:choose>
284                    </xslt:attribute>
285                </img>
286            </xsl:when>
287        </xsl:choose>
288    </xsl:template>
289
290    <!-- calls a template in gslib.xsl in order to avoid xsl vs xslt issue -->
291    <!--<xsl:template match="gsf:equivlinkgs3">
292    <xslt:call-template name="equivDocLinks">
293      <xslt:with-param name="count" select="0"/>
294    </xslt:call-template>
295  </xsl:template>-->
296
297    <!-- Another way (also works with DSpace tutorial): build all the equivalent document links for the current document in one go. No looping necessary: handled in function call. -->
298    <xsl:template match="gsf:equivlinkgs3" name="gsf:equivlinkgs3">
299        <xslt:variable name="docicon" select="metadataList/metadata[contains(@name, 'equivDocIcon')]"/>
300        <xslt:variable name="docStartlink" select="metadataList/metadata[contains(@name, 'all_*,*_equivDocLink')]"/>   
301        <xslt:variable name="docEndlink" select="metadataList/metadata[contains(@name, '/equivDocLink')]"/>
302
303        <xslt:variable name="equivDocLinks" select="java:org.greenstone.gsdl3.util.XSLTUtil.getEquivDocLinks(',',$docicon, $docStartlink, $docEndlink, ' ')" />
304        <xslt:value-of disable-output-escaping="yes" select="$equivDocLinks"/>
305    </xsl:template>
306
307    <!--
308In the collection's format statement, could have the following javascript+XSLT in place of
309the gsf:equivlinkgs3 element (which resolves to the XSLT in config_format.xsl and gslib.xsl).
310<xsl:text disable-output-escaping="yes">&lt;script&gt;var equivDocIcon= [ &quot;
311</xsl:text>
312<gsf:metadata name="equivDocIcon" separator="&quot;, &quot;" multiple="true"/>
313<xsl:text disable-output-escaping="yes">&quot;];var equivDocStartLink= [ &quot;
314</xsl:text>
315<gsf:metadata name="equivDocLink" separator="&quot;,&quot;" multiple="true"/>
316<xsl:text disable-output-escaping="yes">&quot;];var equivDocEndLink= [ &quot;
317</xsl:text>
318<gsf:metadata name="/equivDocLink" separator="&quot;,&quot;" multiple="true"/>
319<xsl:text disable-output-escaping="yes">&quot;];for (var i=0; i&lt;equivDocIcon.length; i++) { document.write(equivDocStartLink[i]+ equivDocIcon[i] + equivDocEndLink[i]); }&lt;/script&gt;
320</xsl:text>
321-->
322
323    <!-- gsf:cgiparam example, as used by the Enhanced PDF tutorial:
324        <a><xsl:attribute name="href"><gsf:metadata name="httpPath" type="collection"/>/index/assoc/<gsf:metadata name="archivedir"/>/<gsf:metadata name="srclinkFile"/>#search=&amp;quot;<gsf:cgi-param name="query"/>&amp;quot;</xsl:attribute>src doc link with query highlighting</a> -->
325    <xsl:template match="gsf:cgi-param">
326        <xslt:value-of disable-output-escaping="yes" select="/page/pageRequest/paramList/param[@name='s1.{@name}']/@value"/>       
327    </xsl:template>
328
329    <!-- A GLI user can use a gsf:displayText element in GS3's Format Features to retrieve
330      a string defined in either collectionConfig.xml or else the interface dictionaries.
331      If the requested string occurs in neither, the request string itself will be output. -->
332    <xsl:template match="gsf:displayText">
333        <xslt:variable name="displaytext">
334            <xsl:call-template name="gsf:displayItem"/>
335        </xslt:variable>
336
337        <xslt:choose>
338            <xslt:when test="$displaytext != ''">
339                <xslt:value-of disable-output-escaping="yes" select="$displaytext"/>         
340            </xslt:when>
341            <xslt:otherwise>
342                <xslt:variable name="interfacetxt">
343                    <xsl:call-template name="gsf:interfaceText"/>
344                </xslt:variable>
345
346                <xslt:choose>
347                    <xslt:when test="$interfacetxt != ''">
348                        <xslt:value-of disable-output-escaping="yes" select="$interfacetxt"/>
349                    </xslt:when>
350                    <xslt:otherwise>
351                        <xslt:value-of disable-output-escaping="yes" select="'{@name}'"/>
352                    </xslt:otherwise>
353                </xslt:choose>
354            </xslt:otherwise>
355        </xslt:choose>
356    </xsl:template>
357
358    <!-- With gsf:displayItem, a user can request a displayItem from collectionConfig.xml -->
359    <xsl:template match="gsf:displayItem" name="gsf:displayItem">
360        <xslt:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/displayItem[@name='{@name}']"/>
361    </xsl:template>
362
363    <!-- With gsf:interfaceText, a user can request a string from the interface dictionaries in the current lang -->
364    <xsl:template match="gsf:interfaceText" name="gsf:interfaceText">
365        <xslt:value-of disable-output-escaping="yes" select="util:getInterfaceText($interface_name, /page/@lang, '{@name}')"/>
366    </xsl:template>
367    <!-- With gsf:collectionText, a user can request a string from the collection's dictionary in the current lang -->
368    <xsl:template match="gsf:collectionText" name="gsf:collectionText">
369        <xslt:variable name="collName" select="/page/pageResponse/collection/@name"/>
370        <xslt:copy-of select="util:getCollectionText($collName, $site_name, /page/@lang, '{@name}', '{@args}')/node()"/>
371    </xsl:template>
372
373    <!-- if this gsf:metadata is a child of a document node then we want to get the metadata for that node -->
374    <xsl:template match="gsf:metadata">
375        <xsl:if test="not(@hidden = 'true')">
376            <!-- set hidden=true on a gsf:metadata so that it gets retrieved from the server but not displayed -->
377            <xsl:variable name="meta_name">
378                <xsl:call-template name="getMetadataName"/>
379            </xsl:variable>
380            <xsl:variable name="separator">
381                <xsl:choose>
382                    <xsl:when test="@separator">
383                        <xsl:value-of disable-output-escaping='yes' select="@separator"/>
384                    </xsl:when>
385                    <xsl:when test="separator">
386                        <xsl:copy-of select="separator/node()"/>
387                    </xsl:when>
388                    <xsl:otherwise>
389                        <xsl:text>, </xsl:text>
390                    </xsl:otherwise>
391                </xsl:choose>
392            </xsl:variable>
393            <xsl:variable name="prefix">
394                <xsl:choose>
395                    <xsl:when test="@prefix">
396                        <xsl:value-of disable-output-escaping='yes' select="@prefix"/>
397                    </xsl:when>
398                    <xsl:when test="prefix">
399                        <xsl:copy-of select="prefix/node()"/>
400                    </xsl:when>
401                </xsl:choose>
402            </xsl:variable>
403            <xsl:variable name="suffix">
404                <xsl:choose>
405                    <xsl:when test="@suffix">
406                        <xsl:value-of disable-output-escaping='yes' select="@suffix"/>
407                    </xsl:when>
408                    <xsl:when test="suffix">
409                        <xsl:copy-of select="suffix/node()"/>
410                    </xsl:when>
411                </xsl:choose>
412            </xsl:variable>
413            <xsl:variable name="postest">
414                <xsl:choose>
415                    <xsl:when test="@pos = 'first'">position()=1</xsl:when>
416                    <xsl:when test="@pos = 'last'">position() = last()</xsl:when>
417                    <xsl:when test="@pos">position() = <xsl:value-of select="@pos"/>
418                    </xsl:when>
419                    <xsl:otherwise>true()</xsl:otherwise>
420                </xsl:choose>
421            </xsl:variable>
422            <xsl:variable name="multiple">
423                <xsl:choose>
424                    <xsl:when test="@pos">false()</xsl:when>
425                    <xsl:otherwise>true()</xsl:otherwise>
426                </xsl:choose>
427            </xsl:variable>
428            <xslt:for-each>
429                <xsl:attribute name="select">
430                    <xsl:if test="@type='collection'">/page/pageResponse/collection/</xsl:if>(.//metadataList)[last()]/metadata[@name='<xsl:value-of select="$meta_name"/>'<xsl:if test="@lang">
431                        <xsl:text> and @lang=</xsl:text>
432                        <xsl:value-of select="@lang"/>
433                    </xsl:if>
434                    <xsl:text>]</xsl:text>
435                </xsl:attribute>
436                <xslt:if test="{$postest}">
437                    <xslt:if test="{$multiple} and position()>1"><xsl:copy-of select="$separator"/>
438                    </xslt:if>
439                    <xsl:copy-of select="$prefix"/>
440                    <xsl:choose>
441                        <xsl:when test="@format">
442                            <xslt:value-of disable-output-escaping='yes' select="util:{@format}(., /page/@lang )"/>
443                        </xsl:when>
444                        <xsl:otherwise>
445                            <xslt:value-of disable-output-escaping='yes' select="."/>
446                        </xsl:otherwise>
447                    </xsl:choose>
448                </xslt:if>
449                <xsl:copy-of select="$suffix"/>
450            </xslt:for-each>
451        </xsl:if>
452    </xsl:template>
453
454
455  <xsl:template match="gsf:foreach-metadata">
456    <xsl:variable name="meta_name"><xsl:call-template name="getMetadataName"/></xsl:variable>
457    <xslt:for-each>
458      <xsl:attribute name="select">
459    <xsl:if test="@type='collection'">/page/pageResponse/collection/</xsl:if>(.//metadataList)[last()]/metadata[@name='<xsl:value-of select="$meta_name"/>'<xsl:if test="@lang"><xsl:text> and @lang=</xsl:text><xsl:value-of select="@lang"/></xsl:if><xsl:text>]</xsl:text>
460      </xsl:attribute><xsl:if test='@separator'><xslt:if test='position()>1'><xsl:value-of select='@separator'/></xslt:if></xsl:if>
461      <xsl:apply-templates/>
462    </xslt:for-each>
463  </xsl:template>
464
465  <xsl:template match="gsf:meta-value">
466    <xslt:value-of select="."/>
467  </xsl:template>
468    <xsl:template name="getMetadataName">
469        <xsl:if test='@select'>
470            <xsl:value-of select='@select'/>
471            <xsl:text>_</xsl:text>
472        </xsl:if>
473        <xsl:value-of select="@name"/>
474    </xsl:template>
475
476
477    <xsl:template match="gsf:text">
478        <xslt:call-template name="documentNodeText"/>
479    </xsl:template>
480
481    <xsl:template match="gsf:if-metadata-exists">
482        <xsl:variable name="meta-path">
483            <xsl:for-each select="gsf:metadata">(.//metadataList)[last()]/metadata[@name='<xsl:call-template name="getMetadataName"/>']</xsl:for-each>
484        </xsl:variable>
485        <xslt:choose>
486            <xslt:when test="{$meta-path}">
487                <xsl:apply-templates select="gsf:if/node()"/>
488            </xslt:when>
489            <xsl:if test="gsf:else">
490                <xslt:otherwise>
491                    <xsl:apply-templates select="gsf:else/node()"/>
492                </xslt:otherwise>
493            </xsl:if>
494        </xslt:choose>
495    </xsl:template>
496
497    <xsl:template match="gsf:choose-metadata">
498        <xslt:choose>
499            <xsl:for-each select="gsf:metadata">
500                <xslt:when>
501                    <xsl:attribute name="test">(.//metadataList)[last()]/metadata[@name='<xsl:call-template name="getMetadataName"/>']</xsl:attribute>
502                    <xsl:apply-templates select="."/>
503                </xslt:when>
504            </xsl:for-each>
505            <xsl:if test="gsf:default">
506                <xslt:otherwise>
507                    <xsl:apply-templates select="gsf:default"/>
508                </xslt:otherwise>
509            </xsl:if>
510        </xslt:choose>
511    </xsl:template>
512
513    <xsl:template match="gsf:switch">
514        <xsl:variable name="meta-name">
515            <xsl:for-each select="gsf:metadata">
516                <xsl:call-template name="getMetadataName"/>
517            </xsl:for-each>
518        </xsl:variable>
519        <xslt:variable name="meta">
520            <xsl:choose>
521                <xsl:when test="@preprocess">
522                    <xslt:value-of select="util:{@preprocess}((.//metadataList)[last()]/metadata[@name='{$meta-name}'], /page/@lang )"/>
523                </xsl:when>
524                <xsl:otherwise>
525                    <xslt:value-of select="(.//metadataList)[last()]/metadata[@name='{$meta-name}']"/>
526                </xsl:otherwise>
527            </xsl:choose>
528        </xslt:variable>
529        <xslt:choose>
530            <xsl:for-each select="gsf:when">
531                <xslt:when test="util:{@test}($meta, '{@test-value}')">
532                    <xsl:apply-templates/>
533                </xslt:when>
534            </xsl:for-each>
535            <xsl:if test="gsf:otherwise">
536                <xslt:otherwise>
537                    <xsl:apply-templates select="gsf:otherwise/node()"/>
538                </xslt:otherwise>
539            </xsl:if>
540        </xslt:choose>
541    </xsl:template>
542
543    <xsl:template match="*">
544        <xsl:copy>
545            <xsl:copy-of select="@*"/>
546            <xsl:apply-templates/>
547        </xsl:copy>
548    </xsl:template>
549
550</xsl:stylesheet>
551
552
Note: See TracBrowser for help on using the browser.