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

Revision 614, 13.1 KB checked in by gosiaw, 12 years ago (diff)

Modes changed

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