source: 1dwg/trunk/examples/collagen/example.xsl @ 16

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

example XSLT now uses revised example.xsl

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