source: 1dwg/trunk/IgorPro/example.xsl @ 21

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

resolve http://svn.smallangles.net/trac/canSAS/ticket/5, all examples updated (includes IgorPro? support test cases)

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