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

Revision 635, 12.7 KB checked in by gosiaw, 12 years ago (diff)

Some parameters are passed to and handled inside xslt

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               
9        <!-- Information for mapping of resource classes into DCWoRMS resourceUnits classes -->
10        <xsl:param name="resourceUnitClasses" select="resourceUnitClasses"/>
11                       
12        <xsl:template match="/">
13                <xsl:element name="environment">
14                        <xsl:attribute name="xsi:noNamespaceSchemaLocation">DCWormsResSchema.xsd</xsl:attribute>
15                        <xsl:element name="resources">
16                                <xsl:element name="scheduler"></xsl:element>
17                                <xsl:apply-templates select="//*[ComponentId]"
18                                        mode="full" />
19                        </xsl:element>
20                </xsl:element>
21        </xsl:template>
22
23        <!-- TODO: Move most of "code" to basic template -->
24        <xsl:template match="//*[ComponentId]" mode="full">
25                <xsl:element name="computingResource">
26                        <xsl:attribute name="class"> 
27                                <xsl:value-of select="name(.)" /> 
28                        </xsl:attribute>
29                        <xsl:attribute name="name">
30                                <xsl:variable name="oldComponentId"><xsl:value-of select="ComponentId" /></xsl:variable>
31                                <xsl:variable name="newComponentId">
32                                <xsl:value-of select="translate($oldComponentId, '/', '_')" />
33                                </xsl:variable>
34                                <xsl:value-of select="$newComponentId" />
35                        </xsl:attribute>
36                        <xsl:call-template name="translateComputingElement"/>
37                </xsl:element>
38        </xsl:template>
39
40        <xsl:template match="//*[ComponentId]">
41                <xsl:call-template name="translateComputingElement"/>
42        </xsl:template>
43
44        <xsl:template name="translateComputingElement">
45                <xsl:if test="Memory">
46                        <xsl:apply-templates select="Memory" />
47                </xsl:if>
48                <xsl:if test="Storage">
49                        <xsl:apply-templates select="Storage" />
50                </xsl:if>
51                <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
52                <xsl:if test="Baseboard">
53                        <xsl:apply-templates select="Baseboard" />
54                </xsl:if>
55                <xsl:if test="Sensor">
56                        <xsl:apply-templates select="Sensor" />
57                </xsl:if>
58                <xsl:if test="PowerSupply">
59                        <xsl:apply-templates select="PowerSupply" />
60                </xsl:if>
61                <xsl:if test="Processor">
62                        <xsl:apply-templates select="Processor" />
63                </xsl:if>
64                <xsl:if test="CoolingDevice">
65                        <!-- Base cooling device data -->
66                        <xsl:apply-templates select="CoolingDevice" mode="basic" />
67                        <!-- Air throughput connected, advanced, technical data -->
68                        <xsl:element name="profile">
69                                <xsl:element name="airThroughputProfile">
70                                        <xsl:element name="airThroughputStates">
71                                                <xsl:apply-templates select="CoolingDevice"
72                                                        mode="advanced" />
73                                        </xsl:element>
74                                </xsl:element>
75                        </xsl:element>
76                </xsl:if>       
77        </xsl:template>
78
79        <xsl:template match="Baseboard">
80                <xsl:element name="parameter">
81                        <xsl:attribute name="name">Baseboard</xsl:attribute>
82                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
83                                cannot contain parameters. Must be parameter containing properties. -->
84                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
85                </xsl:element>
86        </xsl:template>
87
88        <xsl:template match="Sensor">
89                <xsl:element name="parameter">
90                        <xsl:attribute name="name">Sensor</xsl:attribute>
91                        <xsl:element name="property">
92                                <xsl:attribute name="name">Class</xsl:attribute>
93                                <xsl:element name="value">
94                                        <xsl:value-of select="Class" />
95                                </xsl:element>
96                        </xsl:element>
97                        <xsl:element name="property">
98                                <xsl:attribute name="name">Unit</xsl:attribute>
99                                <xsl:element name="value">
100                                        <xsl:value-of select="Unit" />
101                                </xsl:element>
102                        </xsl:element>
103                        <xsl:if test="MinValue">
104                                <xsl:element name="property">
105                                        <xsl:attribute name="name">MinValue</xsl:attribute>
106                                        <xsl:element name="value">
107                                                <xsl:value-of select="MinValue" />
108                                        </xsl:element>
109                                </xsl:element>
110                        </xsl:if>
111                        <xsl:if test="MaxValue">
112                                <xsl:element name="property">
113                                        <xsl:attribute name="name">MaxValue</xsl:attribute>
114                                        <xsl:element name="value">
115                                                <xsl:value-of select="MaxValue" />
116                                        </xsl:element>
117                                </xsl:element>
118                        </xsl:if>
119                        <xsl:if test="Factor">
120                                <xsl:element name="property">
121                                        <xsl:attribute name="name">Factor</xsl:attribute>
122                                        <xsl:element name="value">
123                                                <xsl:value-of select="Factor" />
124                                        </xsl:element>
125                                </xsl:element>
126                        </xsl:if>
127                        <xsl:if test="Accuracy">
128                                <xsl:element name="property">
129                                        <xsl:attribute name="name">Accuracy</xsl:attribute>
130                                        <xsl:element name="value">
131                                                <xsl:value-of select="Accuracy" />
132                                        </xsl:element>
133                                </xsl:element>
134                        </xsl:if>
135
136                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
137                                cannot contain parameters. Must be parameter containing properties. -->
138                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
139                </xsl:element>
140        </xsl:template>
141
142        <xsl:template match="Processor">
143                <xsl:element name="computingResource">
144                        <xsl:attribute name="class">Processor</xsl:attribute>
145                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
146                        <xsl:element name="parameter">
147                                <xsl:attribute name="name">MaxClockSpeed</xsl:attribute>
148                                <xsl:element name="value">
149                                        <xsl:value-of select="MaxClockSpeed" />
150                                </xsl:element>
151                        </xsl:element>
152                        <xsl:if test="PState | CState">
153                                <!-- If PState or CState elements present add powerProfile element -->
154                                <xsl:element name="profile">
155                                        <xsl:element name="powerProfile">
156                                                <xsl:element name="powerStates">
157                                                        <xsl:apply-templates select="PState" />
158                                                        <xsl:apply-templates select="CState" />
159                                                </xsl:element>
160                                        </xsl:element>
161                                </xsl:element>
162                        </xsl:if>
163                </xsl:element>
164        </xsl:template>
165
166        <xsl:template match="PState">
167                <xsl:element name="powerState">
168                        <xsl:call-template name="BasicStateParameters" />
169                        <!-- Voltage & Frequency -->
170                        <xsl:element name="parameter">
171                                <xsl:attribute name="name">Voltage</xsl:attribute>
172                                <xsl:element name="value">
173                                        <xsl:value-of select="Voltage" />
174                                </xsl:element>
175                        </xsl:element>
176                        <xsl:element name="parameter">
177                                <xsl:attribute name="name">Frequency</xsl:attribute>
178                                <xsl:element name="value">
179                                        <xsl:value-of select="Frequency" />
180                                </xsl:element>
181                        </xsl:element>
182                </xsl:element>
183        </xsl:template>
184
185        <xsl:template match="CState">
186                <xsl:element name="powerState">
187                        <xsl:call-template name="BasicStateParameters" />
188                </xsl:element>
189        </xsl:template>
190
191        <xsl:template name="BasicStateParameters">
192                <xsl:element name="name">
193                        <xsl:value-of select="State" />
194                </xsl:element>
195                <xsl:element name="powerUsage">
196                        <xsl:value-of select="PowerUsage" />
197                </xsl:element>
198                <xsl:element name="transition">
199                        <xsl:element name="to">
200                                <xsl:value-of select="Transition/ToState" />
201                        </xsl:element>
202                        <xsl:element name="powerUsage">
203                                <xsl:value-of select="Transition/PowerUsage" />
204                        </xsl:element>
205                        <xsl:element name="time">
206                                <xsl:value-of select="Transition/Time" />
207                        </xsl:element>
208                </xsl:element>
209        </xsl:template>
210
211        <xsl:template match="PowerSupply">
212                <xsl:element name="parameter">
213                        <xsl:attribute name="name">PowerSupply</xsl:attribute>
214                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
215                                cannot contain parameters. Must be parameter containing properties. -->
216                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
217                </xsl:element>
218        </xsl:template>
219
220        <xsl:template match="Memory">
221                <xsl:element name="resourceUnit">
222                        <xsl:attribute name="class">Memory</xsl:attribute>
223                        <xsl:element name="amount">
224                                <xsl:value-of select="Capacity" />
225                        </xsl:element>
226                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
227                </xsl:element>
228        </xsl:template>
229
230        <xsl:template match="Storage">
231                <xsl:element name="resourceUnit">
232                        <xsl:attribute name="class">Storage</xsl:attribute>
233                        <xsl:attribute name="type"><xsl:value-of select="Class" /></xsl:attribute>
234                        <xsl:element name="amount">
235                                <xsl:attribute name="unit">MB</xsl:attribute>
236                                <xsl:value-of select="Capacity" />
237                        </xsl:element>
238                        <xsl:element name="parameter">
239                                <xsl:attribute name="name">Interface</xsl:attribute>
240                                <xsl:element name="value">
241                                        <xsl:value-of select="Interface" />
242                                </xsl:element>
243                        </xsl:element>
244                        <xsl:call-template name="BasicDEBBPhysicalElementParameters" />
245                </xsl:element>
246        </xsl:template>
247
248        <xsl:template match="CoolingDevice" mode="basic">
249                <xsl:element name="parameter">
250                        <xsl:attribute name="name">CoolingDevice</xsl:attribute>
251                        <!-- Don't call BasicDEBBPhysicalElementParameters, because parameter
252                                cannot contain parameters. Must be parameter containing properties. -->
253
254                        <!-- Obligatory attribute -->
255                        <xsl:element name="property">
256                                <xsl:attribute name="name">Class</xsl:attribute>
257                                <xsl:element name="value">
258                                        <xsl:value-of select="Class" />
259                                </xsl:element>
260                        </xsl:element>
261                        <xsl:if test="MaxCoolingCapacity">
262                                <xsl:element name="property">
263                                        <xsl:attribute name="name">MaxCoolingCapacity</xsl:attribute>
264                                        <xsl:element name="value">
265                                                <xsl:value-of select="MaxCoolingCapacity" />
266                                        </xsl:element>
267                                </xsl:element>
268                        </xsl:if>
269                        <xsl:if test="MaxAirThroughput">
270                                <xsl:element name="property">
271                                        <xsl:attribute name="name">MaxAirThroughput</xsl:attribute>
272                                        <xsl:element name="value">
273                                                <xsl:value-of select="MaxAirThroughput" />
274                                        </xsl:element>
275                                </xsl:element>
276                        </xsl:if>
277                        <xsl:if test="MaxWaterThroughput">
278                                <xsl:element name="property">
279                                        <xsl:attribute name="name">MaxWaterThroughput</xsl:attribute>
280                                        <xsl:element name="value">
281                                                <xsl:value-of select="MaxWaterThroughput" />
282                                        </xsl:element>
283                                </xsl:element>
284                        </xsl:if>
285                        <xsl:call-template name="BasicDEBBPhysicalElementProperties" />
286                </xsl:element>
287        </xsl:template>
288
289        <xsl:template match="CoolingDevice" mode="advanced">
290                <xsl:attribute name="name">DummyCoolingDeviceName</xsl:attribute>
291                <xsl:if test="ThroughputProfile">
292                        <xsl:apply-templates select="ThroughputProfile" />
293                </xsl:if>
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.