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

Revision 600, 10.3 KB checked in by gosiaw, 12 years ago (diff)

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