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

Revision 613, 12.8 KB checked in by gosiaw, 12 years ago (diff)

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