source: 1dwg/trunk/example.xsl @ 61

Last change on this file since 61 was 61, checked in by prjemian, 12 years ago

add special case code to example.xsl to display APS USAXS metadata embedded in SASprocessnote

  • Property svn:keywords set to Id Date Author Revision HeadURL
File size: 14.9 KB
Line 
1<?xml version="1.0"?>
2<xsl:stylesheet version="1.0"
3        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4        xmlns:cs="cansas1d/1.0"
5        xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
6        >
7
8        <!-- http://www.w3schools.com/xsl/xsl_transformation.asp -->
9        <!-- http://www.smallangles.net/wgwiki/index.php/cansas1d_documentation -->
10
11        <xsl:template match="/">
12<!-- DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" -->
13                <html>
14                        <head>
15                                <title>SAS data in canSAS 1-D format</title>
16                        </head>
17                        <body>
18                                <h1>SAS data in canSAS 1-D format</h1>
19                                <small>generated using <TT>example.xsl</TT> from canSAS</small>
20                                <BR />
21                                <table border="2">
22                                        <tr>
23                                                <th bgcolor="lavender">canSAS 1-D XML version:</th>
24                                                <td><xsl:value-of select="cs:SASroot/@version" /></td>
25                                        </tr>
26                                        <tr>
27                                                <th bgcolor="lavender">number of entries:</th>
28                                                <td><xsl:value-of select="count(cs:SASroot/cs:SASentry)" /></td>
29                                        </tr>
30                                        <xsl:if test="count(/cs:SASroot//cs:SASentry)>1">
31                                                <!-- if more than one SASentry, make a table of contents -->
32                                                <xsl:for-each select="/cs:SASroot//cs:SASentry">
33                                                        <tr>
34                                                                <th bgcolor="lavender">SASentry-<xsl:value-of select="position()" /></th>
35                                                                <td>
36                                                                        <a href="#SASentry-{generate-id(.)}">
37                                                                                <xsl:if test="@name!=''">(<xsl:value-of select="@name" />)</xsl:if>
38                                                                                <xsl:value-of select="cs:Title" />
39                                                                        </a>
40                                                                </td>
41                                                                <xsl:if test="count(cs:SASdata)>1">
42                                                                        <td>
43                                                                                <!-- if more than one SASdata, make a local table of contents -->
44                                                                                <xsl:for-each select="cs:SASdata">
45                                                                                        <xsl:if test="position()>1">
46                                                                                                <xsl:text> | </xsl:text>
47                                                                                        </xsl:if>
48                                                                                        <a href="#SASdata-{generate-id(.)}">
49                                                                                                <xsl:choose>
50                                                                                                        <xsl:when test="cs:name!=''">
51                                                                                                                <xsl:value-of select="cs:name" />
52                                                                                                        </xsl:when>
53                                                                                                        <xsl:when test="@name!=''">
54                                                                                                                <xsl:value-of select="@name" />
55                                                                                                        </xsl:when>
56                                                                                                        <xsl:otherwise>
57                                                                                                                SASdata<xsl:value-of select="position()" />
58                                                                                                        </xsl:otherwise>
59                                                                                                </xsl:choose>
60                                                                                        </a>
61                                                                                </xsl:for-each>
62                                                                        </td>
63                                                                </xsl:if>
64                                                        </tr>
65                                                </xsl:for-each>
66                                        </xsl:if>
67                                </table>
68                                <xsl:apply-templates  />
69                                <hr />
70                                <small><center>$Id$</center></small>
71                        </body>
72                </html>
73        </xsl:template>
74
75        <xsl:template match="cs:SASroot">
76                <xsl:for-each select="cs:SASentry">
77                        <hr />
78                        <br />
79                        <a id="#SASentry-{generate-id(.)}"  name="#SASentry-{generate-id(.)}" />
80                        <h1>SASentry<xsl:value-of select="position()" />:<xsl:if 
81                                test="@name!=''">(<xsl:value-of select="@name" />)</xsl:if>
82                                <xsl:value-of select="cs:Title" /></h1>
83                        <xsl:if test="count(cs:SASdata)>1">
84                                <table border="2">
85                                        <caption>SASdata contents</caption>
86                                        <xsl:for-each select="cs:SASdata">
87                                                <tr>
88                                                        <th>SASdata-<xsl:value-of select="position()" /></th>
89                                                        <td>
90                                                                <a href="#SASdata-{generate-id(.)}">
91                                                                        <xsl:choose>
92                                                                        <xsl:when test="@name!=''">
93                                                                                        <xsl:value-of select="@name" />
94                                                                                </xsl:when>
95                                                                                <xsl:otherwise>
96                                                                                        SASdata<xsl:value-of select="position()" />
97                                                                                </xsl:otherwise>
98                                                                        </xsl:choose>
99                                                                </a>
100                                                        </td>
101                                                </tr>
102                                        </xsl:for-each>
103                                </table>
104                        </xsl:if>
105                        <br />
106                        <table border="2">
107                                <tr>
108                                        <th>SAS data</th>
109                                        <th>Selected Metadata</th>
110                                </tr>
111                                <tr>
112                                        <td valign="top"><xsl:apply-templates  select="cs:SASdata" /></td>
113                                        <td valign="top">
114                                                <table border="2">
115                                                        <tr bgcolor="lavender">
116                                                                <th>name</th>
117                                                                <th>value</th>
118                                                                <th>unit</th>
119                                                        </tr>
120                                                        <tr>
121                                                                <td>Title</td>
122                                                                <td><xsl:value-of select="cs:Title" /></td>
123                                                                <td />
124                                                        </tr>
125                                                        <tr>
126                                                                <td>Run</td>
127                                                                <td><xsl:value-of select="cs:Run" /></td>
128                                                                <td />
129                                                        </tr>
130                                                        <tr><xsl:apply-templates  select="run" /></tr>
131                                                        <xsl:apply-templates  select="cs:SASsample" />
132                                                        <xsl:apply-templates  select="cs:SASinstrument" />
133                                                        <xsl:apply-templates  select="cs:SASprocess" />
134                                                        <xsl:apply-templates  select="cs:SASnote" />
135                                                </table>
136                                        </td>
137                                </tr>
138                        </table>
139                </xsl:for-each>
140        </xsl:template>
141
142        <xsl:template match="cs:SASdata">
143                <a id="#SASdata-{generate-id(.)}"  name="#SASdata-{generate-id(.)}" />
144                <table border="2">
145                        <caption><xsl:if 
146                                test="@name!=''"><xsl:value-of select="@name" /></xsl:if> (<xsl:value-of 
147                                select="count(cs:Idata)" /> points)</caption>
148                        <tr bgcolor="lavender">
149                                <xsl:for-each select="cs:Idata[1]/*">
150                                        <th>
151                                                <xsl:value-of select="name()" /> 
152                                                <xsl:if test="@unit!=''"> (<xsl:value-of select="@unit" />)</xsl:if>
153                                        </th>
154                                </xsl:for-each>
155                        </tr>
156                        <xsl:for-each select="cs:Idata">
157                                <tr>
158                                        <xsl:for-each select="*">
159                                                <td><xsl:value-of select="." /></td>
160                                        </xsl:for-each>
161                                </tr>
162                        </xsl:for-each>
163                </table>
164        </xsl:template>
165
166        <xsl:template match="cs:SASsample">
167                <tr>
168                        <td>SASsample</td>
169                        <td><xsl:value-of select="@name" /></td>
170                        <td />
171                </tr>
172                <xsl:for-each select="*">
173                        <xsl:choose>
174                                <xsl:when test="name()='position'">
175                                        <xsl:apply-templates select="." />
176                                </xsl:when>
177                                <xsl:when test="name()='orientation'">
178                                        <xsl:apply-templates select="." />
179                                </xsl:when>
180                                <xsl:otherwise>
181                                        <tr>
182                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
183                                                <td><xsl:value-of select="." /></td>
184                                                <td><xsl:value-of select="@unit" /></td>
185                                        </tr>
186                                </xsl:otherwise>
187                        </xsl:choose>
188                </xsl:for-each>
189        </xsl:template>
190
191        <xsl:template match="cs:SASinstrument">
192                <tr>
193                        <td>SASinstrument</td>
194                        <td><xsl:value-of select="cs:name" /></td>
195                        <td><xsl:value-of select="@name" /></td>
196                </tr>
197                <xsl:for-each select="*">
198                        <xsl:choose>
199                                <xsl:when test="name()='SASsource'"><xsl:apply-templates select="." /></xsl:when>
200                                <xsl:when test="name()='SAScollimation'"><xsl:apply-templates select="." /></xsl:when>
201                                <xsl:when test="name()='SASdetector'"><xsl:apply-templates select="." /></xsl:when>
202                                <xsl:when test="name()='name'" />
203                                <xsl:otherwise>
204                                        <tr>
205                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
206                                                <td><xsl:value-of select="." /></td>
207                                                <td><xsl:value-of select="@unit" /></td>
208                                        </tr>
209                                </xsl:otherwise>
210                        </xsl:choose>
211                </xsl:for-each>
212        </xsl:template>
213
214        <xsl:template match="cs:SASsource">
215                <tr>
216                        <td><xsl:value-of select="name()" /></td>
217                        <td><xsl:value-of select="@name" /></td>
218                        <td />
219                </tr>
220                <xsl:for-each select="*">
221                        <xsl:choose>
222                                <xsl:when test="name()='beam_size'"><xsl:apply-templates select="." /></xsl:when>
223                                <xsl:otherwise>
224                                        <tr>
225                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
226                                                <td><xsl:value-of select="." /></td>
227                                                <td><xsl:value-of select="@unit" /></td>
228                                        </tr>
229                                </xsl:otherwise>
230                        </xsl:choose>
231                </xsl:for-each>
232        </xsl:template>
233
234        <xsl:template match="cs:beam_size">
235                <tr>
236                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
237                        <td><xsl:value-of select="@name" /></td>
238                        <td />
239                </tr>
240                <xsl:for-each select="*">
241                        <tr>
242                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
243                                <td><xsl:value-of select="." /></td>
244                                <td><xsl:value-of select="@unit" /></td>
245                        </tr>
246                </xsl:for-each>
247        </xsl:template>
248
249        <xsl:template match="cs:SAScollimation">
250                <xsl:for-each select="*">
251                        <xsl:choose>
252                                <xsl:when test="name()='aperture'"><xsl:apply-templates select="." /></xsl:when>
253                                <xsl:otherwise>
254                                        <tr>
255                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
256                                                <td><xsl:value-of select="." /></td>
257                                                <td><xsl:value-of select="@unit" /></td>
258                                        </tr>
259                                </xsl:otherwise>
260                        </xsl:choose>
261                </xsl:for-each>
262        </xsl:template>
263
264        <xsl:template match="cs:aperture">
265                <tr>
266                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
267                        <td><xsl:value-of select="@name" /></td>
268                        <td><xsl:value-of select="@type" /></td>
269                </tr>
270                <xsl:for-each select="*">
271                        <xsl:choose>
272                                <xsl:when test="name()='size'"><xsl:apply-templates select="." /></xsl:when>
273                                <xsl:otherwise>
274                                        <tr>
275                                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
276                                                <td><xsl:value-of select="." /></td>
277                                                <td><xsl:value-of select="@unit" /></td>
278                                        </tr>
279                                </xsl:otherwise>
280                        </xsl:choose>
281                </xsl:for-each>
282        </xsl:template>
283
284        <xsl:template match="cs:size">
285                <tr>
286                        <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
287                        <td><xsl:value-of select="@name" /></td>
288                        <td />
289                </tr>
290                <xsl:for-each select="*">
291                        <tr>
292                                <td><xsl:value-of select="name(../../..)" />_<xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
293                                <td><xsl:value-of select="." /></td>
294                                <td><xsl:value-of select="@unit" /></td>
295                        </tr>
296                </xsl:for-each>
297        </xsl:template>
298
299        <xsl:template match="cs:SASdetector">
300                <tr>
301                        <td><xsl:value-of select="name()" /></td>
302                        <td><xsl:value-of select="cs:name" /></td>
303                        <td><xsl:value-of select="@name" /></td>
304                </tr>
305                <xsl:for-each select="*">
306                        <xsl:choose>
307                                <xsl:when test="name()='name'" />
308                                <xsl:when test="name()='offset'"><xsl:apply-templates select="." /></xsl:when>
309                                <xsl:when test="name()='orientation'"><xsl:apply-templates select="." /></xsl:when>
310                                <xsl:when test="name()='beam_center'"><xsl:apply-templates select="." /></xsl:when>
311                                <xsl:when test="name()='pixel_size'"><xsl:apply-templates select="." /></xsl:when>
312                                <xsl:otherwise>
313                                        <tr>
314                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
315                                                <td><xsl:value-of select="." /></td>
316                                                <td><xsl:value-of select="@unit" /></td>
317                                        </tr>
318                                </xsl:otherwise>
319                        </xsl:choose>
320                </xsl:for-each>
321        </xsl:template>
322
323        <xsl:template match="cs:orientation">
324                <tr>
325                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
326                        <td><xsl:value-of select="@name" /></td>
327                        <td />
328                </tr>
329                <xsl:for-each select="*">
330                        <tr>
331                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
332                                <td><xsl:value-of select="." /></td>
333                                <td><xsl:value-of select="@unit" /></td>
334                        </tr>
335                </xsl:for-each>
336        </xsl:template>
337
338        <xsl:template match="cs:position">
339                <tr>
340                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
341                        <td><xsl:value-of select="@name" /></td>
342                        <td />
343                </tr>
344                <xsl:for-each select="*">
345                        <tr>
346                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
347                                <td><xsl:value-of select="." /></td>
348                                <td><xsl:value-of select="@unit" /></td>
349                        </tr>
350                </xsl:for-each>
351        </xsl:template>
352
353        <xsl:template match="cs:offset">
354                <tr>
355                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
356                        <td><xsl:value-of select="@name" /></td>
357                        <td />
358                </tr>
359                <xsl:for-each select="*">
360                        <tr>
361                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
362                                <td><xsl:value-of select="." /></td>
363                                <td><xsl:value-of select="@unit" /></td>
364                        </tr>
365                </xsl:for-each>
366        </xsl:template>
367
368        <xsl:template match="cs:beam_center">
369                <tr>
370                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
371                        <td><xsl:value-of select="@name" /></td>
372                        <td />
373                </tr>
374                <xsl:for-each select="*">
375                        <tr>
376                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
377                                <td><xsl:value-of select="." /></td>
378                                <td><xsl:value-of select="@unit" /></td>
379                        </tr>
380                </xsl:for-each>
381        </xsl:template>
382
383        <xsl:template match="cs:pixel_size">
384                <tr>
385                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
386                        <td><xsl:value-of select="@name" /></td>
387                        <td />
388                </tr>
389                <xsl:for-each select="*">
390                        <tr>
391                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
392                                <td><xsl:value-of select="." /></td>
393                                <td><xsl:value-of select="@unit" /></td>
394                        </tr>
395                </xsl:for-each>
396        </xsl:template>
397
398        <xsl:template match="cs:term">
399                <tr>
400                        <td><xsl:value-of select="@name" /></td>
401                        <td><xsl:value-of select="." /></td>
402                        <td><xsl:value-of select="@unit" /></td>
403                </tr>
404        </xsl:template>
405
406        <xsl:template match="cs:SASprocessnote" mode="standard">
407                <tr>
408                        <td><xsl:value-of select="name()" /></td>
409                        <td><xsl:value-of select="." /></td>
410                        <td><xsl:value-of select="@name" /></td>
411                </tr>
412        </xsl:template>
413       
414        <xsl:template match="cs:SASprocessnote" mode="Indra">
415                <!--
416                        Customization for APS USAXS metadata
417                        These will be IgorPro wavenote variables
418                -->
419                <xsl:for-each select="cs:APS_USAXS">
420                        <!-- ignore any other elements at this point -->
421                        <tr>
422                                <td bgcolor="lightgrey"><xsl:value-of select="name(..)" /></td>
423                                <td bgcolor="lightgrey"><xsl:value-of select="name()" /></td>
424                                <td bgcolor="lightgrey"><xsl:value-of select="@name" /></td>
425                        </tr>
426                        <xsl:for-each select="*">
427                                <tr>
428                                        <td><xsl:value-of select="name()" /></td>
429                                        <td><xsl:value-of select="." /></td>
430                                        <td><xsl:value-of select="@name" /></td>
431                                </tr>
432                        </xsl:for-each>
433                </xsl:for-each>
434        </xsl:template>
435       
436        <xsl:template match="cs:SASprocess">
437                <tr>
438                        <td><xsl:value-of select="name()" /></td>
439                        <td><xsl:value-of select="cs:name" /></td>
440                        <td><xsl:value-of select="@name" /></td>
441                </tr>
442                <xsl:for-each select="*">
443                        <xsl:choose>
444                                <xsl:when test="name()='name'" />
445                                <xsl:when test="name()='term'"><xsl:apply-templates select="." /></xsl:when>
446                                <xsl:when test="name()='SASprocessnote'">
447                                        <xsl:choose>
448                                                <xsl:when test="../@name='Indra'"><xsl:apply-templates select="." mode="Indra"/></xsl:when>
449                                                <xsl:otherwise><xsl:apply-templates select="." mode="standard"/></xsl:otherwise>
450                                        </xsl:choose>
451                                </xsl:when>
452                                <xsl:otherwise>
453                                        <tr>
454                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
455                                                <td><xsl:value-of select="." /></td>
456                                                <td />
457                                        </tr>
458                                </xsl:otherwise>
459                        </xsl:choose>
460                </xsl:for-each>
461        </xsl:template>
462
463        <xsl:template match="cs:SASnote">
464                <xsl:if test="@name!=''">
465                        <tr>
466                                <td><xsl:value-of select="name()" /></td>
467                                <td><xsl:value-of select="." /></td>
468                                <td><xsl:value-of select="@name" /></td>
469                        </tr>
470                </xsl:if>
471        </xsl:template>
472
473</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.