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

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

Namespace attributes added to environment element.

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