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

Revision 597, 8.8 KB checked in by gosiaw, 12 years ago (diff)

Some validation problems eliminated

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:if test="Memory">
26                                <xsl:apply-templates select="Memory" />
27                        </xsl:if>
28                        <xsl:if test="Storage">
29                                <xsl:apply-templates select="Storage" />
30                        </xsl:if>
31                        <xsl:if test="CoolingDevice">
32                                <xsl:apply-templates select="CoolingDevice" />
33                        </xsl:if>
34                        <xsl:call-template name="BasicDEBBPhysicalElementData" />
35                        <xsl:if test="Baseboard">
36                                <xsl:apply-templates select="Baseboard" />
37                        </xsl:if>
38                        <xsl:if test="Processor">
39                                <xsl:apply-templates select="Processor" />
40                        </xsl:if>
41                </xsl:element>
42        </xsl:template>
43
44        <xsl:template match="Baseboard">
45                <xsl:element name="parameter">
46                        <xsl:attribute name="name">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                </xsl:element>
137        </xsl:template>
138
139        <xsl:template match="Memory">
140                <xsl:element name="resourceUnit">
141                        <xsl:attribute name="class">Memory</xsl:attribute>
142                        <xsl:element name="amount">
143                                <xsl:value-of select="Capacity" />
144                        </xsl:element>
145                        <xsl:call-template name="BasicDEBBPhysicalElementData" />
146                </xsl:element>
147        </xsl:template>
148
149        <xsl:template match="Storage">
150                <!-- TODO: Not finished -->
151                <xsl:element name="resourceUnit">
152                        <xsl:attribute name="class">Storage</xsl:attribute>
153                        <xsl:element name="amount">
154                                <xsl:attribute name="unit">MB</xsl:attribute>
155                                1
156                        </xsl:element>
157                        <!-- <xsl:call-template name="BasicDEBBPhysicalElementData" /> -->
158                </xsl:element>
159        </xsl:template>
160
161        <xsl:template match="CoolingDevice">
162                <!-- TODO: Not finished -->
163                <xsl:element name="profile">
164                        <xsl:element name="airThroughputProfile">
165                                <!-- <xsl:attribute name="name">CoolingDevice</xsl:attribute> -->
166                                <!-- TODO: What to take it from?? -->
167<!--                            <xsl:element name="airThroughputEstimationPlugin">-->
168<!--                            </xsl:element>                          -->
169                                <xsl:if test="ThroughputProfile">
170                                        <xsl:element name="airThroughputStates">
171                                                <xsl:apply-templates select="ThroughputProfile" />
172                                        </xsl:element>
173                                </xsl:if>
174                                <!-- Obligatory attribute -->
175                                <xsl:element name="parameter">
176                                        <xsl:attribute name="name">Class</xsl:attribute>
177                                        <xsl:element name="value">
178                                                <xsl:value-of select="Class" />
179                                        </xsl:element>
180                                </xsl:element>
181                                <xsl:if test="MaxCoolingCapacity">
182                                        <xsl:element name="parameter">
183                                                <xsl:attribute name="name">MaxCoolingCapacity</xsl:attribute>
184                                                <xsl:element name="value">
185                                                        <xsl:value-of select="MaxCoolingCapacity" />
186                                                </xsl:element>
187                                        </xsl:element>
188                                </xsl:if>
189                                <xsl:if test="MaxAirThroughput">
190                                        <xsl:element name="parameter">
191                                                <xsl:attribute name="name">MaxAirThroughput</xsl:attribute>
192                                                <xsl:element name="value">
193                                                        <xsl:value-of select="MaxAirThroughput" />
194                                                </xsl:element>
195                                        </xsl:element>
196                                </xsl:if>
197                                <xsl:if test="MaxWaterThroughput">
198                                        <xsl:element name="parameter">
199                                                <xsl:attribute name="name">MaxWaterThroughput</xsl:attribute>
200                                                <xsl:element name="value">
201                                                        <xsl:value-of select="MaxWaterThroughput" />
202                                                </xsl:element>
203                                        </xsl:element>
204                                </xsl:if>                               
205                                <xsl:call-template name="BasicDEBBPhysicalElementData" />
206                        </xsl:element>
207                </xsl:element>
208        </xsl:template>
209
210        <xsl:template match="ThroughputProfile">
211                <xsl:apply-templates select="FlowState" />
212        </xsl:template>
213
214        <xsl:template match="FlowState">
215                <xsl:element name="airThroughputState">
216                        <xsl:element name="name">
217                                <xsl:value-of select="State" />
218                        </xsl:element>
219                        <xsl:if test="Flow">
220                                <xsl:element name="value">
221                                        <xsl:value-of select="Flow" />
222                                </xsl:element>
223                        </xsl:if>
224                        <xsl:if test="PowerUsage">
225                                <xsl:element name="powerUsage">
226                                        <xsl:value-of select="PowerUsage" />
227                                </xsl:element>
228                        </xsl:if>
229                        <xsl:if test="Transition">
230                                <xsl:apply-templates select="Transition" />
231                        </xsl:if>
232                </xsl:element>
233        </xsl:template>
234
235        <xsl:template match="Transition">
236                <xsl:element name="parameter">
237                        <xsl:attribute name="name">ToState</xsl:attribute>
238                        <xsl:element name="value">
239                                <xsl:value-of select="ToState" />
240                        </xsl:element>
241                </xsl:element>
242                <xsl:element name="parameter">
243                        <xsl:attribute name="name">PowerUsage</xsl:attribute>
244                        <xsl:element name="value">
245                                <xsl:value-of select="PowerUsage" />
246                        </xsl:element>
247                </xsl:element>
248                <xsl:element name="parameter">
249                        <xsl:attribute name="name">Time</xsl:attribute>
250                        <xsl:element name="value">
251                                <xsl:value-of select="Time" />
252                        </xsl:element>
253                </xsl:element>
254        </xsl:template>
255
256        <!-- Template for transforming basic parameters of all devices of any type -->
257        <xsl:template name="BasicDEBBPhysicalElementData">
258                <xsl:if test="Manufacturer">
259                        <xsl:element name="parameter">
260                                <xsl:attribute name="name">Manufacturer</xsl:attribute>
261                                <xsl:element name="value">
262                                        <xsl:value-of select="Manufacturer" />
263                                </xsl:element>
264                        </xsl:element>
265                </xsl:if>
266                <xsl:if test="Product">
267                        <xsl:element name="parameter">
268                                <xsl:attribute name="name">Product</xsl:attribute>
269                                <xsl:element name="value">
270                                        <xsl:value-of select="Product" />
271                                </xsl:element>
272                        </xsl:element>
273                </xsl:if>
274                <xsl:if test="MaxPower">
275                        <xsl:element name="parameter">
276                                <xsl:attribute name="name">MaxPower</xsl:attribute>
277                                <xsl:element name="value">
278                                        <xsl:value-of select="MaxPower" />
279                                </xsl:element>
280                        </xsl:element>
281                </xsl:if>
282        </xsl:template>
283</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.