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

Revision 596, 8.7 KB checked in by gosiaw, 12 years ago (diff)

Translating baseboard corrected.

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