source: main/trunk/greenstone3/web/interfaces/default/transform/config_format.xsl@ 24219

Last change on this file since 24219 was 24219, checked in by ak19, 13 years ago

Thanks to Sam, Veronica and Dr Bainbridge, can finally commit the changes necessary for ticket 449.

File size: 8.8 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:xslt="output.xsl"
5 xmlns:java="http://xml.apache.org/xslt/java"
6 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
7 extension-element-prefixes="java">
8
9 <xsl:output method="xml"/>
10 <xsl:namespace-alias
11 stylesheet-prefix="xslt" result-prefix="xsl"/>
12
13 <xsl:template match="format">
14 <format>
15 <xsl:apply-templates/>
16 </format>
17 </xsl:template>
18
19 <xsl:template match="gsf:template">
20 <xslt:template>
21 <xsl:copy-of select="@*"/>
22 <xsl:attribute name="priority">2</xsl:attribute>
23 <xsl:if test=".//gsf:link">
24 <xslt:param name="serviceName"/>
25 <xslt:param name="collName"/>
26 </xsl:if>
27 <xsl:apply-templates/>
28 </xslt:template>
29 </xsl:template>
30
31 <xsl:template match="gsf:link">
32 <xsl:choose>
33 <xsl:when test="@type='classifier'">
34 <a><xslt:attribute name='href'><xslt:value-of select='$library_name'/>?a=b&amp;rt=r&amp;s=<xslt:value-of select='$serviceName'/>&amp;c=<xslt:value-of select='$collName'/>&amp;cl=<xslt:value-of select='@nodeID'/><xslt:if test="classifierNode|documentNode">.pr</xslt:if><xslt:if test="parent::node()[@orientation='horizontal']">&amp;sib=1</xslt:if></xslt:attribute>
35 <xsl:apply-templates/>
36 </a>
37 </xsl:when>
38 <xsl:when test="@type='source'">
39 <a><xslt:attribute name='href'><xslt:value-of
40 disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']" />/index/assoc/<xslt:value-of
41 disable-output-escaping="yes" select="metadataList/metadata[@name='assocfilepath']" />/<xslt:value-of
42 disable-output-escaping="yes" select="metadataList/metadata[@name='Source']" /></xslt:attribute>
43 <xsl:apply-templates/>
44 </a>
45 </xsl:when>
46 <xsl:when test="@type='sourcelinkfile'">
47 <a><xslt:attribute name='href'><xslt:value-of
48 disable-output-escaping="yes" select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']" />/index/assoc/<xslt:value-of
49 disable-output-escaping="yes" select="metadataList/metadata[@name='assocfilepath']" />/<xslt:value-of
50 disable-output-escaping="yes" select="metadataList/metadata[@name='srclinkFile']" /></xslt:attribute>
51 <xsl:apply-templates/>
52 </a>
53 </xsl:when>
54
55 <xsl:otherwise> <!-- a document link -->
56 <xslt:variable name="bookswitch"><xslt:value-of select="/page/pageRequest/paramList/param[@name='book']/@value"/></xslt:variable>
57 <xslt:choose>
58 <xslt:when test="$bookswitch = 'on' or $bookswitch = 'flashxml'">
59 <a><xslt:attribute name="href"><xslt:value-of select='$library_name'/>?a=d&amp;ed=1&amp;book=on&amp;c=<xslt:value-of select='$collName'/>&amp;d=<xslt:value-of select='@nodeID'/>&amp;dt=<xslt:value-of select='@docType'/><xslt:if test="@nodeType='leaf'">&amp;sib=1</xslt:if>&amp;p.a=<xslt:value-of select="/page/pageRequest/@action"/>&amp;p.sa=<xsl:value-of select="/page/pageRequest/@subaction"/>&amp;p.s=<xslt:value-of select="$serviceName"/></xslt:attribute><xsl:apply-templates/></a>
60 </xslt:when>
61 <xslt:otherwise>
62 <a><xslt:attribute name="href"><xslt:value-of select='$library_name'/>?a=d&amp;book=off&amp;c=<xslt:value-of select='$collName'/>&amp;d=<xslt:value-of select='@nodeID'/>&amp;dt=<xslt:value-of select='@docType'/><xslt:if test="@nodeType='leaf'">&amp;sib=1</xslt:if>&amp;p.a=<xslt:value-of select="/page/pageRequest/@action"/>&amp;p.sa=<xsl:value-of select="/page/pageRequest/@subaction"/>&amp;p.s=<xslt:value-of select="$serviceName"/></xslt:attribute><xsl:apply-templates/></a>
63 </xslt:otherwise>
64 </xslt:choose>
65 </xsl:otherwise>
66 </xsl:choose>
67 </xsl:template>
68
69 <xsl:template match="gsf:icon">
70 <xsl:choose>
71 <xsl:when test="@type='classifier'">
72 <xslt:call-template name="bookshelfimg"/>
73 </xsl:when>
74 <xsl:otherwise>
75 <xslt:apply-templates select="." mode="displayNodeIcon"/>
76 </xsl:otherwise>
77 </xsl:choose>
78 </xsl:template>
79
80 <!-- calls a template in icons.xsl in order to avoid xsl vs xslt issue -->
81 <xsl:template match="gsf:equivlinkgs3">
82 <xslt:call-template name="equivDocLinks">
83 <xslt:with-param name="count" select="0"/>
84 </xslt:call-template>
85 </xsl:template>
86
87 <!-- Another way: build all the equivalent document links for the current document in one go. No looping necessary: handled in function call. -->
88 <!--<xsl:template match="gsf:equivlinkgs3">
89 <xslt:variable name="docicon" select="metadataList/metadata[contains(@name, 'equivDocIcon')]"/>
90 <xslt:variable name="docStartlink" select="metadataList/metadata[contains(@name, 'all_*,*_equivDocLink')]"/>
91 <xslt:variable name="docEndlink" select="metadataList/metadata[contains(@name, '/equivDocLink')]"/>
92
93 <xslt:variable name="equivDocLinks" select="java:org.greenstone.gsdl3.util.XSLTUtil.getEquivDocLinks(',',$docicon, $docStartlink, $docEndlink, ' ')" />
94 <xslt:value-of disable-output-escaping="yes" select="$equivDocLinks"/>
95 </xsl:template>-->
96
97<!--
98In the collection's format statement, could have the following javascript+XSLT in place of
99the gsf:equivlinkgs3 element (which resolves to the XSLT in config_format.xsl and icons.xsl).
100<xsl:text disable-output-escaping="yes">&lt;script&gt;var equivDocIcon= [ &quot;
101</xsl:text>
102<gsf:metadata name="equivDocIcon" separator="&quot;, &quot;" multiple="true"/>
103<xsl:text disable-output-escaping="yes">&quot;];var equivDocStartLink= [ &quot;
104</xsl:text>
105<gsf:metadata name="equivDocLink" separator="&quot;,&quot;" multiple="true"/>
106<xsl:text disable-output-escaping="yes">&quot;];var equivDocEndLink= [ &quot;
107</xsl:text>
108<gsf:metadata name="/equivDocLink" separator="&quot;,&quot;" multiple="true"/>
109<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;
110</xsl:text>
111-->
112
113 <xsl:template match="gsf:metadata[@format]">
114 <xslt:value-of disable-output-escaping="yes"><xsl:attribute name="select">java:org.greenstone.gsdl3.util.XSLTUtil.<xsl:value-of select="@format"/>(metadataList/metadata[@name='<xsl:apply-templates select="." mode="get-metadata-name"/>'], /page/@lang )</xsl:attribute></xslt:value-of>
115 </xsl:template>
116
117 <xsl:template match="gsf:metadata">
118 <xslt:value-of disable-output-escaping="yes"><xsl:attribute name="select">metadataList/metadata[@name='<xsl:apply-templates select="." mode="get-metadata-name"/>']</xsl:attribute></xslt:value-of>
119 </xsl:template>
120
121 <xsl:template match="gsf:metadata" mode="get-metadata-name">
122 <xsl:if test="@multiple='true'">all_</xsl:if><xsl:if test='@select'><xsl:value-of select='@select'/>_</xsl:if><xsl:if test="@separator">*<xsl:value-of select='@separator'/>*_</xsl:if><xsl:value-of select="@name"/>
123 </xsl:template>
124
125 <xsl:template match="gsf:metadata-old">
126 <xslt:value-of disable-output-escaping="yes"><xsl:attribute name="select">metadataList/metadata[@name="<xsl:choose><xsl:when test="@select='parent'">parent_</xsl:when><xsl:when test="@select='root'">root_</xsl:when><xsl:when test="@select='ancestors'">ancestors'<xsl:value-of select='@separator'/>'_</xsl:when><xsl:when test="@select='siblings'">siblings_'<xsl:value-of select='@separator'/>'_</xsl:when></xsl:choose><xsl:value-of select="@name"/>"]</xsl:attribute></xslt:value-of>
127 </xsl:template>
128
129 <xsl:template match="gsf:text">
130 <xslt:apply-templates select="nodeContent"/>
131 </xsl:template>
132
133 <xsl:template match="gsf:choose-metadata">
134 <xslt:choose>
135 <xsl:for-each select="gsf:metadata">
136 <xslt:when><xsl:attribute name="test">metadataList/metadata[@name='<xsl:apply-templates select="." mode="get-metadata-name"/>']</xsl:attribute>
137 <xsl:apply-templates select="."/>
138 </xslt:when>
139 </xsl:for-each>
140 <xsl:if test="gsf:default">
141 <xslt:otherwise><xsl:apply-templates select="gsf:default"/></xslt:otherwise>
142 </xsl:if>
143 </xslt:choose>
144 </xsl:template>
145
146 <xsl:template match="gsf:switch">
147 <xsl:variable name="meta-name"><xsl:apply-templates select="gsf:metadata" mode="get-metadata-name"/></xsl:variable>
148 <xslt:variable name="meta"><xsl:choose><xsl:when test="@preprocess"><xslt:value-of select="util:{@preprocess}(metadataList/metadata[@name='{$meta-name}'])"/></xsl:when><xsl:otherwise><xslt:value-of select="metadataList/metadata[@name='{$meta-name}']"/></xsl:otherwise></xsl:choose></xslt:variable>
149 <xslt:choose>
150 <xsl:for-each select="gsf:when">
151 <xslt:when test="util:{@test}($meta, '{@test-value}')">
152 <xsl:apply-templates/>
153 </xslt:when>
154 </xsl:for-each>
155 <xsl:if test="gsf:otherwise">
156 <xslt:otherwise>
157 <xsl:apply-templates select="gsf:otherwise/node()"/>
158 </xslt:otherwise>
159 </xsl:if>
160 </xslt:choose>
161 </xsl:template>
162
163 <xsl:template match="*">
164 <xsl:copy>
165 <xsl:copy-of select="@*"/>
166 <xsl:apply-templates/>
167 </xsl:copy>
168 </xsl:template>
169
170</xsl:stylesheet>
171
172
Note: See TracBrowser for help on using the repository browser.