source: DCWoRMS/trunk/src/test/DEBBTranslator/xml/DEBBComponentTranslator.xsl @ 625

Revision 625, 13.4 KB checked in by gosiaw, 12 years ago (diff)

Slashes in ComponentIds? in DEBB Component document changed into underscores in DCWoRMS document

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plm="http://www.plmxml.org/Schemas/PLMXMLSchema"
4        xmlns:cim="http://www.coolemall.eu/DEBBComponent" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5        <!-- Specification of the output document -->
6        <xsl:output method="xml" version="1.0" encoding="UTF-8"
7                indent="yes" />
8        <xsl:template match="/">
9                <xsl:element name="environment">
10                        <xsl:attribute name="xsi:noNamespaceSchemaLocation">DCWormsResSchema.xsd</xsl:attribute>
11                        <xsl:element name="resources">
12                                <xsl:element name="scheduler"></xsl:element>
13                                <xsl:apply-templates select="//*[ComponentId]"
14                                        mode="full" />
15                        </xsl:element>
16                </xsl:element>
17        </xsl:template>
18
19        <xsl:template match="//*[ComponentId]" mode="full">
20                <xsl:element name="computingResource">
21                        <xsl:attribute name="class"> 
22                                <xsl:value-of select="name(.)" /> 
23                        </xsl:attribute>
24                        <xsl:attribute name="name">
25                                <xsl:variable name="oldComponentId"><xsl:value-of select="ComponentId" /></xsl:variable>
26                                <xsl:variable name="newComponentId">
27                                <xsl:value-of
28                                select="translate($oldComponentId, '/', '_')"/>
29                                </xsl:variable>
30                                <xsl:value-of select="$newComponentId" />
31                        </xsl:attribute>
32                        <xsl:if test="Memory">
33                                <xsl:apply-templates select="Memory" />
34                        </xsl:if>
35                        <xsl:if test="Storage">
36                                <xsl:apply-templates select="Storage" />
37                        </xsl:if>
38                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
39                        <xsl:if test="Baseboard">
40                                <xsl:apply-templates select="Baseboard" />
41                        </xsl:if>
42                        <xsl:if test="Sensor">
43                                <xsl:apply-templates select="Sensor" />
44                        </xsl:if>
45                        <xsl:if test="PowerSupply">
46                                <xsl:apply-templates select="PowerSupply" />
47                        </xsl:if>
48                        <xsl:if test="Processor">
49                                <xsl:apply-templates select="Processor" />
50                        </xsl:if>
51                        <xsl:if test="CoolingDevice">
52                                <!-- Base cooling device data -->
53                                <xsl:apply-templates select="CoolingDevice"
54                                        mode="basic" />
55                                <!-- Air throughput connected, advanced, technical data -->
56                                <xsl:element name="profile">
57                                        <xsl:element name="airThroughputProfile">
58                                                <xsl:element name="airThroughputStates">
59                                                        <xsl:apply-templates select="CoolingDevice"
60                                                                mode="advanced" />
61                                                </xsl:element>
62                                        </xsl:element>
63                                </xsl:element>
64                        </xsl:if>
65                </xsl:element>
66        </xsl:template>
67
68        <xsl:template match="//*[ComponentId]">
69                <xsl:if test="Memory">
70                        <xsl:apply-templates select="Memory" />
71                </xsl:if>
72                <xsl:if test="Storage">
73                        <xsl:apply-templates select="Storage" />
74                </xsl:if>
75                <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
76                <xsl:if test="Baseboard">
77                        <xsl:apply-templates select="Baseboard" />
78                </xsl:if>
79                <xsl:if test="Sensor">
80                        <xsl:apply-templates select="Sensor" />
81                </xsl:if>
82                <xsl:if test="PowerSupply">
83                        <xsl:apply-templates select="PowerSupply" />
84                </xsl:if>
85                <xsl:if test="Processor">
86                        <xsl:apply-templates select="Processor" />
87                </xsl:if>
88                <xsl:if test="CoolingDevice">
89                        <!-- Base cooling device data -->
90                        <xsl:apply-templates select="CoolingDevice" mode="basic" />
91                        <!-- Air throughput connected, advanced, technical data -->
92                        <xsl:element name="profile">
93                                <xsl:element name="airThroughputProfile">
94                                        <xsl:element name="airThroughputStates">
95                                                <xsl:apply-templates select="CoolingDevice"
96                                                        mode="advanced" />
97                                        </xsl:element>
98                                </xsl:element>
99                        </xsl:element>
100                </xsl:if>
101        </xsl:template>
102
103        <xsl:template match="Baseboard">
104                <xsl:element name="parameter">
105                        <xsl:attribute name="name">Baseboard</xsl:attribute>
106                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
107                                cannot contain parameters. Must be parameter containing properties. -->
108                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
109                </xsl:element>
110        </xsl:template>
111
112        <xsl:template match="Sensor">
113                <xsl:element name="parameter">
114                        <xsl:attribute name="name">Sensor</xsl:attribute>
115                        <xsl:element name="property">
116                                <xsl:attribute name="name">Class</xsl:attribute>
117                                <xsl:element name="value">
118                                        <xsl:value-of select="Class" />
119                                </xsl:element>
120                        </xsl:element>
121                        <xsl:element name="property">
122                                <xsl:attribute name="name">Unit</xsl:attribute>
123                                <xsl:element name="value">
124                                        <xsl:value-of select="Unit" />
125                                </xsl:element>
126                        </xsl:element>
127                        <xsl:if test="MinValue">
128                                <xsl:element name="property">
129                                        <xsl:attribute name="name">MinValue</xsl:attribute>
130                                        <xsl:element name="value">
131                                                <xsl:value-of select="MinValue" />
132                                        </xsl:element>
133                                </xsl:element>
134                        </xsl:if>
135                        <xsl:if test="MaxValue">
136                                <xsl:element name="property">
137                                        <xsl:attribute name="name">MaxValue</xsl:attribute>
138                                        <xsl:element name="value">
139                                                <xsl:value-of select="MaxValue" />
140                                        </xsl:element>
141                                </xsl:element>
142                        </xsl:if>
143                        <xsl:if test="Factor">
144                                <xsl:element name="property">
145                                        <xsl:attribute name="name">Factor</xsl:attribute>
146                                        <xsl:element name="value">
147                                                <xsl:value-of select="Factor" />
148                                        </xsl:element>
149                                </xsl:element>
150                        </xsl:if>
151                        <xsl:if test="Accuracy">
152                                <xsl:element name="property">
153                                        <xsl:attribute name="name">Accuracy</xsl:attribute>
154                                        <xsl:element name="value">
155                                                <xsl:value-of select="Accuracy" />
156                                        </xsl:element>
157                                </xsl:element>
158                        </xsl:if>
159
160                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
161                                cannot contain parameters. Must be parameter containing properties. -->
162                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
163                </xsl:element>
164        </xsl:template>
165
166        <xsl:template match="Processor">
167                <xsl:element name="computingResource">
168                        <xsl:attribute name="class">Processor</xsl:attribute>
169                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
170                        <xsl:element name="parameter">
171                                <xsl:attribute name="name">MaxClockSpeed</xsl:attribute>
172                                <xsl:element name="value">
173                                        <xsl:value-of select="MaxClockSpeed" />
174                                </xsl:element>
175                        </xsl:element>
176                        <xsl:if test="PState | CState">
177                                <!-- If PState or CState elements present add powerProfile element -->
178                                <xsl:element name="profile">
179                                        <xsl:element name="powerProfile">
180                                                <xsl:element name="powerStates">
181                                                        <xsl:apply-templates select="PState" />
182                                                        <xsl:apply-templates select="CState" />
183                                                </xsl:element>
184                                        </xsl:element>
185                                </xsl:element>
186                        </xsl:if>
187                </xsl:element>
188        </xsl:template>
189
190        <xsl:template match="PState">
191                <xsl:element name="powerState">
192                        <xsl:call-template name="BasicStateParameters" />
193                        <!-- Voltage & Frequency -->
194                        <xsl:element name="parameter">
195                                <xsl:attribute name="name">Voltage</xsl:attribute>
196                                <xsl:element name="value">
197                                        <xsl:value-of select="Voltage" />
198                                </xsl:element>
199                        </xsl:element>
200                        <xsl:element name="parameter">
201                                <xsl:attribute name="name">Frequency</xsl:attribute>
202                                <xsl:element name="value">
203                                        <xsl:value-of select="Frequency" />
204                                </xsl:element>
205                        </xsl:element>
206                </xsl:element>
207        </xsl:template>
208
209        <xsl:template match="CState">
210                <xsl:element name="powerState">
211                        <xsl:call-template name="BasicStateParameters" />
212                </xsl:element>
213        </xsl:template>
214
215        <xsl:template name="BasicStateParameters">
216                <xsl:element name="name">
217                        <xsl:value-of select="State" />
218                </xsl:element>
219                <xsl:element name="powerUsage">
220                        <xsl:value-of select="PowerUsage" />
221                </xsl:element>
222                <xsl:element name="transition">
223                        <xsl:element name="to">
224                                <xsl:value-of select="Transition/ToState" />
225                        </xsl:element>
226                        <xsl:element name="powerUsage">
227                                <xsl:value-of select="Transition/PowerUsage" />
228                        </xsl:element>
229                        <xsl:element name="time">
230                                <xsl:value-of select="Transition/Time" />
231                        </xsl:element>
232                </xsl:element>
233        </xsl:template>
234
235        <xsl:template match="PowerSupply">
236                <xsl:element name="parameter">
237                        <xsl:attribute name="name">PowerSupply</xsl:attribute>
238                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
239                                cannot contain parameters. Must be parameter containing properties. -->
240                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
241                </xsl:element>
242        </xsl:template>
243
244        <xsl:template match="Memory">
245                <xsl:element name="resourceUnit">
246                        <xsl:attribute name="class">Memory</xsl:attribute>
247                        <xsl:element name="amount">
248                                <xsl:value-of select="Capacity" />
249                        </xsl:element>
250                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
251                </xsl:element>
252        </xsl:template>
253
254        <xsl:template match="Storage">
255                <xsl:element name="resourceUnit">
256                        <xsl:attribute name="class">Storage</xsl:attribute>
257                        <xsl:attribute name="type"><xsl:value-of select="Class" /></xsl:attribute>
258                        <xsl:element name="amount">
259                                <xsl:attribute name="unit">MB</xsl:attribute>
260                                <xsl:value-of select="Capacity" />
261                        </xsl:element>
262                        <xsl:element name="parameter">
263                                <xsl:attribute name="name">Interface</xsl:attribute>
264                                <xsl:element name="value">
265                                        <xsl:value-of select="Interface" />
266                                </xsl:element>
267                        </xsl:element>
268                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
269                </xsl:element>
270        </xsl:template>
271
272        <xsl:template match="CoolingDevice" mode="basic">
273                <xsl:element name="parameter">
274                        <xsl:attribute name="name">CoolingDevice</xsl:attribute>
275                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
276                                cannot contain parameters. Must be parameter containing properties. -->
277
278                        <!-- Obligatory attribute -->
279                        <xsl:element name="property">
280                                <xsl:attribute name="name">Class</xsl:attribute>
281                                <xsl:element name="value">
282                                        <xsl:value-of select="Class" />
283                                </xsl:element>
284                        </xsl:element>
285                        <xsl:if test="MaxCoolingCapacity">
286                                <xsl:element name="property">
287                                        <xsl:attribute name="name">MaxCoolingCapacity</xsl:attribute>
288                                        <xsl:element name="value">
289                                                <xsl:value-of select="MaxCoolingCapacity" />
290                                        </xsl:element>
291                                </xsl:element>
292                        </xsl:if>
293                        <xsl:if test="MaxAirThroughput">
294                                <xsl:element name="property">
295                                        <xsl:attribute name="name">MaxAirThroughput</xsl:attribute>
296                                        <xsl:element name="value">
297                                                <xsl:value-of select="MaxAirThroughput" />
298                                        </xsl:element>
299                                </xsl:element>
300                        </xsl:if>
301                        <xsl:if test="MaxWaterThroughput">
302                                <xsl:element name="property">
303                                        <xsl:attribute name="name">MaxWaterThroughput</xsl:attribute>
304                                        <xsl:element name="value">
305                                                <xsl:value-of select="MaxWaterThroughput" />
306                                        </xsl:element>
307                                </xsl:element>
308                        </xsl:if>
309                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
310                </xsl:element>
311        </xsl:template>
312
313        <xsl:template match="CoolingDevice" mode="advanced">
314                <xsl:attribute name="name">DummyCoolingDeviceName</xsl:attribute>
315                <xsl:if test="ThroughputProfile">
316                        <xsl:apply-templates select="ThroughputProfile" />
317                </xsl:if>
318        </xsl:template>
319
320        <xsl:template match="ThroughputProfile">
321                <xsl:apply-templates select="FlowState" />
322        </xsl:template>
323
324        <xsl:template match="FlowState">
325                <xsl:element name="airThroughputState">
326                        <xsl:element name="name">
327                                <xsl:value-of select="State" />
328                        </xsl:element>
329                        <xsl:if test="Flow">
330                                <xsl:element name="value">
331                                        <xsl:value-of select="Flow" />
332                                </xsl:element>
333                        </xsl:if>
334                        <xsl:if test="PowerUsage">
335                                <xsl:element name="powerUsage">
336                                        <xsl:value-of select="PowerUsage" />
337                                </xsl:element>
338                        </xsl:if>
339                        <xsl:if test="Transition">
340                                <xsl:apply-templates select="Transition" />
341                        </xsl:if>
342                </xsl:element>
343        </xsl:template>
344
345        <xsl:template match="Transition">
346                <xsl:element name="parameter">
347                        <xsl:attribute name="name">ToState</xsl:attribute>
348                        <xsl:element name="value">
349                                <xsl:value-of select="ToState" />
350                        </xsl:element>
351                </xsl:element>
352                <xsl:element name="parameter">
353                        <xsl:attribute name="name">PowerUsage</xsl:attribute>
354                        <xsl:element name="value">
355                                <xsl:value-of select="PowerUsage" />
356                        </xsl:element>
357                </xsl:element>
358                <xsl:element name="parameter">
359                        <xsl:attribute name="name">Time</xsl:attribute>
360                        <xsl:element name="value">
361                                <xsl:value-of select="Time" />
362                        </xsl:element>
363                </xsl:element>
364        </xsl:template>
365
366        <!-- Template for transforming basic parameters of all devices of any type -->
367        <xsl:template name="BasicDEBBPhysicalElementParameters">
368                <xsl:if test="Manufacturer">
369                        <xsl:element name="parameter">
370                                <xsl:attribute name="name">Manufacturer</xsl:attribute>
371                                <xsl:element name="value">
372                                        <xsl:value-of select="Manufacturer" />
373                                </xsl:element>
374                        </xsl:element>
375                </xsl:if>
376                <xsl:if test="Product">
377                        <xsl:element name="parameter">
378                                <xsl:attribute name="name">Product</xsl:attribute>
379                                <xsl:element name="value">
380                                        <xsl:value-of select="Product" />
381                                </xsl:element>
382                        </xsl:element>
383                </xsl:if>
384                <xsl:if test="MaxPower">
385                        <xsl:element name="parameter">
386                                <xsl:attribute name="name">MaxPower</xsl:attribute>
387                                <xsl:element name="value">
388                                        <xsl:value-of select="MaxPower" />
389                                </xsl:element>
390                        </xsl:element>
391                </xsl:if>
392        </xsl:template>
393
394        <xsl:template name="BasicDEBBPhysicalElementProperties">
395                <xsl:if test="Manufacturer">
396                        <xsl:element name="property">
397                                <xsl:attribute name="name">Manufacturer</xsl:attribute>
398                                <xsl:element name="value">
399                                        <xsl:value-of select="Manufacturer" />
400                                </xsl:element>
401                        </xsl:element>
402                </xsl:if>
403                <xsl:if test="Product">
404                        <xsl:element name="property">
405                                <xsl:attribute name="name">Product</xsl:attribute>
406                                <xsl:element name="value">
407                                        <xsl:value-of select="Product" />
408                                </xsl:element>
409                        </xsl:element>
410                </xsl:if>
411                <xsl:if test="MaxPower">
412                        <xsl:element name="property">
413                                <xsl:attribute name="name">MaxPower</xsl:attribute>
414                                <xsl:element name="value">
415                                        <xsl:value-of select="MaxPower" />
416                                </xsl:element>
417                        </xsl:element>
418                </xsl:if>
419        </xsl:template>
420</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.