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

Last change on this file since 17 was 17, checked in by prjemian, 14 years ago

more metadata read by IgorPro? reader

File size: 13.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="http://www.smallangles.net/cansas1d"
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!=''">
38                                                                                        (<xsl:value-of select="@name" />)
39                                                                                </xsl:if>
40                                                                                <xsl:value-of select="cs:Title" />
41                                                                        </a>
42                                                                        <xsl:if test="count(cs:SASdata)>1">
43                                                                                <!-- if more than one SASdata, make a local table of contents -->
44                                                                                <xsl:for-each select="cs:SASdata">
45                                                                                        <xsl:text> | </xsl:text>
46                                                                                        <a href="#SASdata-{generate-id(.)}">
47                                                                                                <xsl:choose>
48                                                                                                        <xsl:when test="cs:name!=''">
49                                                                                                                <xsl:value-of select="cs:name" />
50                                                                                                        </xsl:when>
51                                                                                                        <xsl:when test="@name!=''">
52                                                                                                                <xsl:value-of select="@name" />
53                                                                                                        </xsl:when>
54                                                                                                        <xsl:otherwise>
55                                                                                                                SASdata<xsl:value-of select="position()" />
56                                                                                                        </xsl:otherwise>
57                                                                                                </xsl:choose>
58                                                                                        </a>
59                                                                                </xsl:for-each>
60                                                                        </xsl:if>
61                                                                </td>
62                                                        </tr>
63                                                </xsl:for-each>
64                                        </xsl:if>
65                                </table>
66                                <xsl:apply-templates  />
67                                <hr />
68                        </body>
69                </html>
70        </xsl:template>
71
72        <xsl:template match="cs:SASroot">
73                <xsl:for-each select="cs:SASentry">
74                        <hr />
75                        <br />
76                        <a id="#SASentry-{generate-id(.)}"  name="#SASentry-{generate-id(.)}" />
77                        <h1>
78                                        SASentry<xsl:value-of select="position()" />:
79                                        <xsl:if test="@name!=''">
80                                                (<xsl:value-of select="@name" />)
81                                        </xsl:if>
82                                        <xsl:value-of select="cs:Title" />
83                        </h1>
84                        <xsl:if test="count(cs:SASdata)>1">
85                                <table border="2">
86                                        <caption>SASdata contents</caption>
87                                        <xsl:for-each select="cs:SASdata">
88                                                <tr>
89                                                        <th>SASdata-<xsl:value-of select="position()" /></th>
90                                                        <td>
91                                                                <a href="#SASdata-{generate-id(.)}">
92                                                                        <xsl:choose>
93                                                                        <xsl:when test="@name!=''">
94                                                                                        <xsl:value-of select="@name" />
95                                                                                </xsl:when>
96                                                                                <xsl:otherwise>
97                                                                                        SASdata<xsl:value-of select="position()" />
98                                                                                </xsl:otherwise>
99                                                                        </xsl:choose>
100                                                                </a>
101                                                        </td>
102                                                </tr>
103                                        </xsl:for-each>
104                                </table>
105                        </xsl:if>
106                        <br />
107                        <table border="2">
108                                <tr>
109                                        <th>SAS data</th>
110                                        <th>Selected Metadata</th>
111                                </tr>
112                                <tr>
113                                        <td valign="top"><xsl:apply-templates  select="cs:SASdata" /></td>
114                                        <td valign="top">
115                                                <table border="2">
116                                                        <tr bgcolor="lavender">
117                                                                <th>name</th>
118                                                                <th>value</th>
119                                                                <th>unit</th>
120                                                        </tr>
121                                                        <tr>
122                                                                <td>Title</td>
123                                                                <td><xsl:value-of select="cs:Title" /></td>
124                                                                <td />
125                                                        </tr>
126                                                        <tr>
127                                                                <td>Run</td>
128                                                                <td><xsl:value-of select="cs:Run" /></td>
129                                                                <td />
130                                                        </tr>
131                                                        <tr><xsl:apply-templates  select="run" /></tr>
132                                                        <xsl:apply-templates  select="cs:SASsample" />
133                                                        <xsl:apply-templates  select="cs:SASinstrument" />
134                                                        <xsl:apply-templates  select="cs:SASprocess" />
135                                                        <xsl:apply-templates  select="cs:SASnote" />
136                                                </table>
137                                        </td>
138                                </tr>
139                        </table>
140                </xsl:for-each>
141        </xsl:template>
142
143        <xsl:template match="cs:SASdata">
144                <a id="#SASdata-{generate-id(.)}"  name="#SASdata-{generate-id(.)}" />
145                <table border="2">
146                        <caption>
147                                <xsl:if test="@name!=''">
148                                        <xsl:value-of select="@name" />
149                                </xsl:if>
150                                (<xsl:value-of select="count(cs:Idata)" /> points)
151                        </caption>
152                        <tr bgcolor="lavender">
153                                <xsl:for-each select="cs:Idata[1]/*">
154                                        <th>
155                                                <xsl:value-of select="name()" /> 
156                                                <xsl:if test="@unit!=''">
157                                                        (<xsl:value-of select="@unit" />)
158                                                </xsl:if>
159                                        </th>
160                                </xsl:for-each>
161                        </tr>
162                        <xsl:for-each select="cs:Idata">
163                                <tr>
164                                        <xsl:for-each select="*">
165                                                <td><xsl:value-of select="." /></td>
166                                        </xsl:for-each>
167                                </tr>
168                        </xsl:for-each>
169                </table>
170        </xsl:template>
171
172        <xsl:template match="cs:SASsample">
173                <tr>
174                        <td>SASsample</td>
175                        <td><xsl:value-of select="@name" /></td>
176                        <td />
177                </tr>
178                <xsl:for-each select="*">
179                        <xsl:choose>
180                                <xsl:when test="name()='position'">
181                                        <xsl:apply-templates select="." />
182                                </xsl:when>
183                                <xsl:when test="name()='orientation'">
184                                        <xsl:apply-templates select="." />
185                                </xsl:when>
186                                <xsl:otherwise>
187                                        <tr>
188                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
189                                                <td><xsl:value-of select="." /></td>
190                                                <td><xsl:value-of select="@unit" /></td>
191                                        </tr>
192                                </xsl:otherwise>
193                        </xsl:choose>
194                </xsl:for-each>
195        </xsl:template>
196
197        <xsl:template match="cs:SASinstrument">
198                <tr>
199                        <td>SASinstrument</td>
200                        <td><xsl:value-of select="cs:name" /></td>
201                        <td><xsl:value-of select="@name" /></td>
202                </tr>
203                <xsl:for-each select="*">
204                        <xsl:choose>
205                                <xsl:when test="name()='SASsource'"><xsl:apply-templates select="." /></xsl:when>
206                                <xsl:when test="name()='SAScollimation'"><xsl:apply-templates select="." /></xsl:when>
207                                <xsl:when test="name()='SASdetector'"><xsl:apply-templates select="." /></xsl:when>
208                                <xsl:when test="name()='name'" />
209                                <xsl:otherwise>
210                                        <tr>
211                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
212                                                <td><xsl:value-of select="." /></td>
213                                                <td><xsl:value-of select="@unit" /></td>
214                                        </tr>
215                                </xsl:otherwise>
216                        </xsl:choose>
217                </xsl:for-each>
218        </xsl:template>
219
220        <xsl:template match="cs:SASsource">
221                <tr>
222                        <td><xsl:value-of select="name()" /></td>
223                        <td><xsl:value-of select="@name" /></td>
224                        <td />
225                </tr>
226                <xsl:for-each select="*">
227                        <xsl:choose>
228                                <xsl:when test="name()='beam_size'"><xsl:apply-templates select="." /></xsl:when>
229                                <xsl:otherwise>
230                                        <tr>
231                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
232                                                <td><xsl:value-of select="." /></td>
233                                                <td><xsl:value-of select="@unit" /></td>
234                                        </tr>
235                                </xsl:otherwise>
236                        </xsl:choose>
237                </xsl:for-each>
238        </xsl:template>
239
240        <xsl:template match="cs:beam_size">
241                <tr>
242                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
243                        <td><xsl:value-of select="@name" /></td>
244                        <td />
245                </tr>
246                <xsl:for-each select="*">
247                        <tr>
248                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
249                                <td><xsl:value-of select="." /></td>
250                                <td><xsl:value-of select="@unit" /></td>
251                        </tr>
252                </xsl:for-each>
253        </xsl:template>
254
255        <xsl:template match="cs:SAScollimation">
256                <xsl:for-each select="*">
257                        <xsl:choose>
258                                <xsl:when test="name()='aperture'"><xsl:apply-templates select="." /></xsl:when>
259                                <xsl:otherwise>
260                                        <tr>
261                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
262                                                <td><xsl:value-of select="." /></td>
263                                                <td><xsl:value-of select="@unit" /></td>
264                                        </tr>
265                                </xsl:otherwise>
266                        </xsl:choose>
267                </xsl:for-each>
268        </xsl:template>
269
270        <xsl:template match="cs:aperture">
271                <tr>
272                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
273                        <td><xsl:value-of select="@name" /></td>
274                        <td><xsl:value-of select="@type" /></td>
275                </tr>
276                <xsl:for-each select="*">
277                        <xsl:choose>
278                                <xsl:when test="name()='size'"><xsl:apply-templates select="." /></xsl:when>
279                                <xsl:otherwise>
280                                        <tr>
281                                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
282                                                <td><xsl:value-of select="." /></td>
283                                                <td><xsl:value-of select="@unit" /></td>
284                                        </tr>
285                                </xsl:otherwise>
286                        </xsl:choose>
287                </xsl:for-each>
288        </xsl:template>
289
290        <xsl:template match="cs:size">
291                <tr>
292                        <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
293                        <td><xsl:value-of select="@name" /></td>
294                        <td />
295                </tr>
296                <xsl:for-each select="*">
297                        <tr>
298                                <td><xsl:value-of select="name(../../..)" />_<xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
299                                <td><xsl:value-of select="." /></td>
300                                <td><xsl:value-of select="@unit" /></td>
301                        </tr>
302                </xsl:for-each>
303        </xsl:template>
304
305        <xsl:template match="cs:SASdetector">
306                <tr>
307                        <td><xsl:value-of select="name()" /></td>
308                        <td><xsl:value-of select="cs:name" /></td>
309                        <td><xsl:value-of select="@name" /></td>
310                </tr>
311                <xsl:for-each select="*">
312                        <xsl:choose>
313                                <xsl:when test="name()='name'" />
314                                <xsl:when test="name()='offset'"><xsl:apply-templates select="." /></xsl:when>
315                                <xsl:when test="name()='orientation'"><xsl:apply-templates select="." /></xsl:when>
316                                <xsl:when test="name()='beam_center'"><xsl:apply-templates select="." /></xsl:when>
317                                <xsl:when test="name()='pixel_size'"><xsl:apply-templates select="." /></xsl:when>
318                                <xsl:otherwise>
319                                        <tr>
320                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
321                                                <td><xsl:value-of select="." /></td>
322                                                <td><xsl:value-of select="@unit" /></td>
323                                        </tr>
324                                </xsl:otherwise>
325                        </xsl:choose>
326                </xsl:for-each>
327        </xsl:template>
328
329        <xsl:template match="cs:orientation">
330                <tr>
331                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
332                        <td><xsl:value-of select="@name" /></td>
333                        <td />
334                </tr>
335                <xsl:for-each select="*">
336                        <tr>
337                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
338                                <td><xsl:value-of select="." /></td>
339                                <td><xsl:value-of select="@unit" /></td>
340                        </tr>
341                </xsl:for-each>
342        </xsl:template>
343
344        <xsl:template match="cs:position">
345                <tr>
346                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
347                        <td><xsl:value-of select="@name" /></td>
348                        <td />
349                </tr>
350                <xsl:for-each select="*">
351                        <tr>
352                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
353                                <td><xsl:value-of select="." /></td>
354                                <td><xsl:value-of select="@unit" /></td>
355                        </tr>
356                </xsl:for-each>
357        </xsl:template>
358
359        <xsl:template match="cs:offset">
360                <tr>
361                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
362                        <td><xsl:value-of select="@name" /></td>
363                        <td />
364                </tr>
365                <xsl:for-each select="*">
366                        <tr>
367                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
368                                <td><xsl:value-of select="." /></td>
369                                <td><xsl:value-of select="@unit" /></td>
370                        </tr>
371                </xsl:for-each>
372        </xsl:template>
373
374        <xsl:template match="cs:beam_center">
375                <tr>
376                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
377                        <td><xsl:value-of select="@name" /></td>
378                        <td />
379                </tr>
380                <xsl:for-each select="*">
381                        <tr>
382                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
383                                <td><xsl:value-of select="." /></td>
384                                <td><xsl:value-of select="@unit" /></td>
385                        </tr>
386                </xsl:for-each>
387        </xsl:template>
388
389        <xsl:template match="cs:pixel_size">
390                <tr>
391                        <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
392                        <td><xsl:value-of select="@name" /></td>
393                        <td />
394                </tr>
395                <xsl:for-each select="*">
396                        <tr>
397                                <td><xsl:value-of select="name(../..)" />_<xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
398                                <td><xsl:value-of select="." /></td>
399                                <td><xsl:value-of select="@unit" /></td>
400                        </tr>
401                </xsl:for-each>
402        </xsl:template>
403
404        <xsl:template match="cs:term">
405                <tr>
406                        <td><xsl:value-of select="@name" /></td>
407                        <td><xsl:value-of select="." /></td>
408                        <td><xsl:value-of select="@unit" /></td>
409                </tr>
410        </xsl:template>
411
412        <xsl:template match="cs:SASprocessnote">
413                <tr>
414                        <td><xsl:value-of select="name()" /></td>
415                        <td><xsl:value-of select="." /></td>
416                        <td><xsl:value-of select="@name" /></td>
417                </tr>
418        </xsl:template>
419
420        <xsl:template match="cs:SASprocess">
421                <tr>
422                        <td><xsl:value-of select="name()" /></td>
423                        <td><xsl:value-of select="cs:name" /></td>
424                        <td><xsl:value-of select="@name" /></td>
425                </tr>
426                <xsl:for-each select="*">
427                        <xsl:choose>
428                                <xsl:when test="name()='name'" />
429                                <xsl:when test="name()='term'"><xsl:apply-templates select="." /></xsl:when>
430                                <xsl:when test="name()='SASprocessnote'"><xsl:apply-templates select="." /></xsl:when>
431                                <xsl:otherwise>
432                                        <tr>
433                                                <td><xsl:value-of select="name(..)" />_<xsl:value-of select="name()" /></td>
434                                                <td><xsl:value-of select="." /></td>
435                                                <td />
436                                        </tr>
437                                </xsl:otherwise>
438                        </xsl:choose>
439                </xsl:for-each>
440        </xsl:template>
441
442        <xsl:template match="cs:SASnote">
443                <xsl:if test="@name!=''">
444                        <tr>
445                                <td><xsl:value-of select="name()" /></td>
446                                <td><xsl:value-of select="." /></td>
447                                <td><xsl:value-of select="@name" /></td>
448                        </tr>
449                </xsl:if>
450        </xsl:template>
451
452</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.