source: 1dwg/trunk/examples/cansas-2007/example.xsl @ 64

Last change on this file since 64 was 64, checked in by prjemian, 11 years ago

revise all copies of example.xsl to SVN revision 63

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