source: 1dwg/trunk/cansasxml-extended-html.xsl @ 245

Last change on this file since 245 was 245, checked in by prjemian, 9 years ago

typo

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