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

Revision 599, 8.9 KB checked in by gosiaw, 12 years ago (diff)

Storage transformation improved

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