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

Revision 601, 11.7 KB checked in by gosiaw, 12 years ago (diff)

Sensors added

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