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

Revision 606, 12.4 KB checked in by gosiaw, 12 years ago (diff)

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