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

Revision 26500, 20.2 KB (checked in by davidb, 8 years ago)

Some white-space changes (indenting) and a comment added at the end to track a new gsf:xxx element that can be used in a collectionConfig.xml file (but doesn't actually need a definition in this file).

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    <xsl:template match="gsf:style[@src]">
74        <link rel="stylesheet" type="text/css">
75            <xsl:attribute name='href'>
76                <xsl:value-of select="@src"/>       
77            </xsl:attribute>
78        </link>
79    </xsl:template>
80
81    <xsl:template match="gsf:style">
82        <style type="text/css">
83            <xsl:apply-templates/>
84        </style>
85    </xsl:template>
86
87
88    <xsl:template match="gsf:image">
89        <xslt:variable name="metaName">
90            <xsl:choose>
91                <xsl:when test="@type = 'thumb'">Thumb</xsl:when>
92                <xsl:when test="@type = 'screen'">Screen</xsl:when>
93                <xsl:when test="@type = 'source'">SourceFile</xsl:when>
94            </xsl:choose>
95        </xslt:variable>
96        <xslt:if test="(.//metadataList)[last()]/metadata[@name = $metaName]">
97            <img>
98                <xslt:attribute name='src'>
99                    <xslt:value-of disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name = 'httpPath']"/>
100                    <xsl:text>/index/assoc/</xsl:text>
101                    <xslt:value-of disable-output-escaping="yes" select="/page/pageResponse/document/metadataList/metadata[@name = 'assocfilepath']"/>
102                    <xsl:text>/</xsl:text>
103                    <xslt:value-of disable-output-escaping="yes" select="(.//metadataList)[last()]/metadata[@name = $metaName]"/>
104                </xslt:attribute>
105            </img>
106        </xslt:if>
107    </xsl:template>
108
109    <xsl:template match="params"></xsl:template>
110
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
469  <xsl:template name="getMetadataName">
470    <xsl:if test='@select'>
471      <xsl:value-of select='@select'/>
472      <xsl:text>_</xsl:text>
473    </xsl:if>
474    <xsl:value-of select="@name"/>
475  </xsl:template>
476
477
478    <xsl:template match="gsf:text">
479        <xslt:call-template name="documentNodeText"/>
480    </xsl:template>
481
482    <xsl:template match="gsf:if-metadata-exists">
483        <xsl:variable name="meta-path">
484            <xsl:for-each select="gsf:metadata">(.//metadataList)[last()]/metadata[@name='<xsl:call-template name="getMetadataName"/>']</xsl:for-each>
485        </xsl:variable>
486        <xslt:choose>
487            <xslt:when test="{$meta-path}">
488                <xsl:apply-templates select="gsf:if/node()"/>
489            </xslt:when>
490            <xsl:if test="gsf:else">
491                <xslt:otherwise>
492                    <xsl:apply-templates select="gsf:else/node()"/>
493                </xslt:otherwise>
494            </xsl:if>
495        </xslt:choose>
496    </xsl:template>
497
498    <xsl:template match="gsf:choose-metadata">
499        <xslt:choose>
500            <xsl:for-each select="gsf:metadata">
501                <xslt:when>
502                    <xsl:attribute name="test">(.//metadataList)[last()]/metadata[@name='<xsl:call-template name="getMetadataName"/>']</xsl:attribute>
503                    <xsl:apply-templates select="."/>
504                </xslt:when>
505            </xsl:for-each>
506            <xsl:if test="gsf:default">
507                <xslt:otherwise>
508                    <xsl:apply-templates select="gsf:default"/>
509                </xslt:otherwise>
510            </xsl:if>
511        </xslt:choose>
512    </xsl:template>
513
514    <xsl:template match="gsf:switch">
515        <xsl:variable name="meta-name">
516            <xsl:for-each select="gsf:metadata">
517                <xsl:call-template name="getMetadataName"/>
518            </xsl:for-each>
519        </xsl:variable>
520        <xslt:variable name="meta">
521            <xsl:choose>
522                <xsl:when test="@preprocess">
523                    <xslt:value-of select="util:{@preprocess}((.//metadataList)[last()]/metadata[@name='{$meta-name}'], /page/@lang )"/>
524                </xsl:when>
525                <xsl:otherwise>
526                    <xslt:value-of select="(.//metadataList)[last()]/metadata[@name='{$meta-name}']"/>
527                </xsl:otherwise>
528            </xsl:choose>
529        </xslt:variable>
530        <xslt:choose>
531            <xsl:for-each select="gsf:when">
532                <xslt:when test="util:{@test}($meta, '{@test-value}')">
533                    <xsl:apply-templates/>
534                </xslt:when>
535            </xsl:for-each>
536            <xsl:if test="gsf:otherwise">
537                <xslt:otherwise>
538                    <xsl:apply-templates select="gsf:otherwise/node()"/>
539                </xslt:otherwise>
540            </xsl:if>
541        </xslt:choose>
542    </xsl:template>
543
544    <!--
545         <gsf:headMetaTags> exists for controlling the <meta name="x" content="y"> elements that appear in the HTML <head></head>
546         XPATH is used to select this item (in header.xsl).  It does not need an explicit definition here in this file
547    -->
548
549    <xsl:template match="*">
550        <xsl:copy>
551            <xsl:copy-of select="@*"/>
552            <xsl:apply-templates/>
553        </xsl:copy>
554    </xsl:template>
555
556</xsl:stylesheet>
557
558
Note: See TracBrowser for help on using the browser.