VirtualBox

source: vbox/trunk/src/VBox/Main/xml/SettingsConverter.xsl@ 43103

Last change on this file since 43103 was 43103, checked in by vboxsync, 12 years ago

whitespace/comment touchup

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 37.9 KB
Line 
1<?xml version="1.0"?>
2
3<!--
4 * :tabSize=2:indentSize=2:noTabs=true:
5 * :folding=explicit:collapseFolds=1:
6 *
7 * Template to convert old VirtualBox settings files to the most recent format.
8
9 Copyright (C) 2006-2009 Oracle Corporation
10
11 This file is part of VirtualBox Open Source Edition (OSE), as
12 available from http://www.virtualbox.org. This file is free software;
13 you can redistribute it and/or modify it under the terms of the GNU
14 General Public License (GPL) as published by the Free Software
15 Foundation, in version 2 as it comes in the "COPYING" file of the
16 VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18-->
19
20<xsl:stylesheet version="1.0"
21 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
22 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
23 xmlns:vb="http://www.innotek.de/VirtualBox-settings"
24 xmlns="http://www.innotek.de/VirtualBox-settings"
25 exclude-result-prefixes="#default vb xsl xsd"
26>
27
28<xsl:output method="xml" indent="yes"/>
29
30<xsl:variable name="curVer" select="substring-before(/vb:VirtualBox/@version, '-')"/>
31<xsl:variable name="curVerPlat" select="substring-after(/vb:VirtualBox/@version, '-')"/>
32<xsl:variable name="curVerFull" select="/vb:VirtualBox/@version"/>
33
34<xsl:template match="/">
35 <xsl:comment> Automatically converted from version '<xsl:value-of select="$curVerFull"/>' </xsl:comment>
36 <xsl:copy>
37 <xsl:apply-templates select="@*|node()"/>
38 </xsl:copy>
39</xsl:template>
40
41<!--
42 * comments outside the root node are gathered to a single line, fix this
43-->
44<xsl:template match="/comment()">
45 <xsl:copy-of select="."/>
46</xsl:template>
47
48<!--
49 * Forbid non-VirtualBox root nodes
50-->
51<xsl:template match="/*">
52 <xsl:message terminate="yes">
53Cannot convert an unknown XML file with the root node '<xsl:value-of select="name()"/>'!
54 </xsl:message>
55</xsl:template>
56
57<!--
58 * Forbid all unsupported VirtualBox settings versions
59-->
60<xsl:template match="/vb:VirtualBox">
61 <xsl:message terminate="yes">
62Cannot convert settings from version '<xsl:value-of select="@version"/>'.
63The source version is not supported.
64 </xsl:message>
65</xsl:template>
66
67<!--
68 * Accept supported settings versions (source setting files we can convert)
69 *
70 * Note that in order to simplify conversion from versions prior to the previous
71 * one, we support multi-step conversion like this: step 1: 1.0 => 1.1,
72 * step 2: 1.1 => 1.2, where 1.2 is the most recent version. If you want to use
73 * such multi-step mode, you need to ensure that only 1.0 => 1.1 is possible, by
74 * using the 'mode=1.1' attribute on both 'apply-templates' within the starting
75 * '/vb:VirtualBox[1.0]' template and within all templates that this
76 * 'apply-templates' should apply.
77 *
78 * If no 'mode' attribute is used as described above, then a direct conversion
79 * (1.0 => 1.2 in the above example) will happen when version 1.0 of the settings
80 * files is detected. Note that the direct conversion from pre-previous versions
81 * will require to patch their conversion templates so that they include all
82 * modifications from all newer versions, which is error-prone. It's better to
83 * use the milt-step mode.
84-->
85
86<!-- 1.1 => 1.2 -->
87<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.1']">
88 <xsl:copy>
89 <xsl:attribute name="version"><xsl:value-of select="concat('1.2','-',$curVerPlat)"/></xsl:attribute>
90 <xsl:apply-templates select="node()" mode="v1.2"/>
91 </xsl:copy>
92</xsl:template>
93
94<!-- 1.2 => 1.3.pre -->
95<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.2']">
96 <xsl:copy>
97 <xsl:attribute name="version"><xsl:value-of select="concat('1.3.pre','-',$curVerPlat)"/></xsl:attribute>
98 <xsl:apply-templates select="node()" mode="v1.3.pre"/>
99 </xsl:copy>
100</xsl:template>
101
102<!-- 1.3.pre => 1.3 -->
103<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.3.pre']">
104 <xsl:copy>
105 <xsl:attribute name="version"><xsl:value-of select="concat('1.3','-',$curVerPlat)"/></xsl:attribute>
106 <xsl:apply-templates select="node()" mode="v1.3"/>
107 </xsl:copy>
108</xsl:template>
109
110<!-- 1.3 => 1.4 -->
111<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.3']">
112 <xsl:copy>
113 <xsl:attribute name="version"><xsl:value-of select="concat('1.4','-',$curVerPlat)"/></xsl:attribute>
114 <xsl:apply-templates select="node()" mode="v1.4"/>
115 </xsl:copy>
116</xsl:template>
117
118<!-- 1.4 => 1.5 -->
119<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.4']">
120 <xsl:copy>
121 <xsl:attribute name="version"><xsl:value-of select="concat('1.5','-',$curVerPlat)"/></xsl:attribute>
122 <xsl:apply-templates select="node()" mode="v1.5"/>
123 </xsl:copy>
124</xsl:template>
125
126<!-- 1.5 => 1.6 -->
127<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.5']">
128 <xsl:copy>
129 <xsl:attribute name="version"><xsl:value-of select="concat('1.6','-',$curVerPlat)"/></xsl:attribute>
130 <xsl:apply-templates select="node()" mode="v1.6"/>
131 </xsl:copy>
132</xsl:template>
133
134<!-- 1.6 => 1.7 -->
135<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.6']">
136 <xsl:copy>
137 <xsl:attribute name="version"><xsl:value-of select="concat('1.7','-',$curVerPlat)"/></xsl:attribute>
138 <xsl:apply-templates select="node()" mode="v1.7"/>
139 </xsl:copy>
140</xsl:template>
141
142<!-- 1.7 => 1.8 -->
143<xsl:template match="/vb:VirtualBox[substring-before(@version,'-')='1.7']">
144 <xsl:copy>
145 <xsl:attribute name="version"><xsl:value-of select="concat('1.8','-',$curVerPlat)"/></xsl:attribute>
146 <xsl:apply-templates select="node()" mode="v1.8"/>
147 </xsl:copy>
148</xsl:template>
149
150<!--
151 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
152 * 1.1 => 1.2
153 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
154-->
155
156<!--
157 * all non-root elements that are not explicitly matched are copied as is
158-->
159<xsl:template match="@*|node()[../..]" mode="v1.2">
160 <xsl:copy>
161 <xsl:apply-templates select="@*|node()[../..]" mode="v1.2"/>
162 </xsl:copy>
163</xsl:template>
164
165<!--
166 * Global settings
167-->
168
169<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.1']/
170 vb:Global/vb:DiskImageRegistry/vb:HardDiskImages//
171 vb:Image"
172 mode="v1.2">
173 <DiffHardDisk>
174 <xsl:attribute name="uuid"><xsl:value-of select="@uuid"/></xsl:attribute>
175 <VirtualDiskImage>
176 <xsl:attribute name="filePath"><xsl:value-of select="@src"/></xsl:attribute>
177 </VirtualDiskImage>
178 <xsl:apply-templates select="vb:Image"/>
179 </DiffHardDisk>
180</xsl:template>
181
182<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.1']/
183 vb:Global/vb:DiskImageRegistry"
184 mode="v1.2">
185<DiskRegistry>
186 <HardDisks>
187 <xsl:for-each select="vb:HardDiskImages/vb:Image">
188 <HardDisk>
189 <xsl:attribute name="uuid"><xsl:value-of select="@uuid"/></xsl:attribute>
190 <xsl:attribute name="type">
191 <xsl:choose>
192 <xsl:when test="@independent='immutable'">immutable</xsl:when>
193 <xsl:when test="@independent='mutable'">immutable</xsl:when>
194 <xsl:otherwise>normal</xsl:otherwise>
195 </xsl:choose>
196 </xsl:attribute>
197 <VirtualDiskImage>
198 <xsl:attribute name="filePath"><xsl:value-of select="@src"/></xsl:attribute>
199 </VirtualDiskImage>
200 <xsl:apply-templates select="vb:Image"/>
201 </HardDisk>
202 </xsl:for-each>
203 </HardDisks>
204 <xsl:copy-of select="vb:DVDImages"/>
205 <xsl:copy-of select="vb:FloppyImages"/>
206</DiskRegistry>
207</xsl:template>
208
209<!--
210 * Machine settings
211-->
212
213<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.1']/
214 vb:Machine//vb:HardDisks"
215 mode="v1.2">
216 <HardDiskAttachments>
217 <xsl:for-each select="vb:HardDisk">
218 <HardDiskAttachment>
219 <xsl:attribute name="hardDisk"><xsl:value-of select="vb:Image/@uuid"/></xsl:attribute>
220 <xsl:apply-templates select="@*"/>
221 </HardDiskAttachment>
222 </xsl:for-each>
223 </HardDiskAttachments>
224</xsl:template>
225
226<!--
227 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
228 * 1.2 => 1.3.pre
229 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
230-->
231
232<!--
233 * all non-root elements that are not explicitly matched are copied as is
234-->
235<xsl:template match="@*|node()[../..]" mode="v1.3.pre">
236 <xsl:copy>
237 <xsl:apply-templates select="@*|node()[../..]" mode="v1.3.pre"/>
238 </xsl:copy>
239</xsl:template>
240
241<!--
242 * Global settings
243-->
244
245<!--
246 * Machine settings
247-->
248
249<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.2']/
250 vb:Machine//vb:USBController"
251 mode="v1.3.pre">
252 <xsl:copy>
253 <xsl:apply-templates select="@*|node()" mode="v1.3.pre"/>
254 </xsl:copy>
255 <SATAController enabled="false"/>
256</xsl:template>
257
258<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.2']/
259 vb:Machine//vb:HardDiskAttachments/vb:HardDiskAttachment"
260 mode="v1.3.pre">
261 <HardDiskAttachment>
262 <xsl:attribute name="hardDisk"><xsl:value-of select="@hardDisk"/></xsl:attribute>
263 <xsl:attribute name="bus">
264 <xsl:choose>
265 <xsl:when test="@bus='ide0'">
266 <xsl:text>IDE</xsl:text>
267 </xsl:when>
268 <xsl:when test="@bus='ide1'">
269 <xsl:text>IDE</xsl:text>
270 </xsl:when>
271 <xsl:otherwise>
272 <xsl:message terminate="yes">
273Value '<xsl:value-of select="@bus"/>' of 'HardDiskAttachment::bus' attribute is invalid.
274 </xsl:message>
275 </xsl:otherwise>
276 </xsl:choose>
277 </xsl:attribute>
278 <xsl:attribute name="channel">0</xsl:attribute>
279 <xsl:attribute name="device">
280 <xsl:choose>
281 <xsl:when test="@device='master'">
282 <xsl:text>0</xsl:text>
283 </xsl:when>
284 <xsl:when test="@device='slave'">
285 <xsl:text>1</xsl:text>
286 </xsl:when>
287 <xsl:otherwise>
288 <xsl:message terminate="yes">
289Value '<xsl:value-of select="@device"/>' of 'HardDiskAttachment::device' attribute is invalid.
290 </xsl:message>
291 </xsl:otherwise>
292 </xsl:choose>
293 </xsl:attribute>
294 </HardDiskAttachment>
295</xsl:template>
296
297<!--
298 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
299 * 1.3.pre => 1.3
300 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
301-->
302
303<!--
304 * all non-root elements that are not explicitly matched are copied as is
305-->
306<xsl:template match="@*|node()[../..]" mode="v1.3">
307 <xsl:copy>
308 <xsl:apply-templates select="@*|node()[../..]" mode="v1.3"/>
309 </xsl:copy>
310</xsl:template>
311
312<!--
313 * Global settings
314-->
315
316<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
317 vb:Global//vb:SystemProperties"
318 mode="v1.3">
319 <xsl:copy>
320 <xsl:apply-templates select="@*[not(name()='defaultSavedStateFolder')]|node()" mode="v1.3"/>
321 </xsl:copy>
322</xsl:template>
323
324<!--
325 * Machine settings
326-->
327
328<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
329 vb:Machine//vb:AudioAdapter"
330 mode="v1.3">
331 <xsl:if test="not(../vb:Uart)">
332 <UART/>
333 </xsl:if>
334 <xsl:if test="not(../vb:Lpt)">
335 <LPT/>
336 </xsl:if>
337 <xsl:copy>
338 <xsl:apply-templates select="@*[not(name()='driver')]|node()" mode="v1.3"/>
339 <xsl:attribute name="driver">
340 <xsl:choose>
341 <xsl:when test="@driver='null'">Null</xsl:when>
342 <xsl:when test="@driver='oss'">OSS</xsl:when>
343 <xsl:when test="@driver='alsa'">ALSA</xsl:when>
344 <xsl:when test="@driver='pulse'">Pulse</xsl:when>
345 <xsl:when test="@driver='coreaudio'">CoreAudio</xsl:when>
346 <xsl:when test="@driver='winmm'">WinMM</xsl:when>
347 <xsl:when test="@driver='dsound'">DirectSound</xsl:when>
348 <xsl:when test="@driver='solaudio'">SolAudio</xsl:when>
349 <xsl:when test="@driver='mmpm'">MMPM</xsl:when>
350 <xsl:otherwise>
351 <xsl:message terminate="yes">
352Value '<xsl:value-of select="@driver"/>' of 'AudioAdapter::driver' attribute is invalid.
353 </xsl:message>
354 </xsl:otherwise>
355 </xsl:choose>
356 </xsl:attribute>
357 </xsl:copy>
358 <xsl:if test="not(../vb:SharedFolders)">
359 <SharedFolders/>
360 </xsl:if>
361 <xsl:if test="not(../vb:Clipboard)">
362 <Clipboard mode="Disabled"/>
363 </xsl:if>
364 <xsl:if test="not(../vb:Guest)">
365 <Guest/>
366 </xsl:if>
367</xsl:template>
368
369<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
370 vb:Machine//vb:RemoteDisplay"
371 mode="v1.3">
372 <xsl:copy>
373 <xsl:apply-templates select="@*[not(name()='authType')]|node()" mode="v1.3"/>
374 <xsl:attribute name="authType">
375 <xsl:choose>
376 <xsl:when test="@authType='null'">Null</xsl:when>
377 <xsl:when test="@authType='guest'">Guest</xsl:when>
378 <xsl:when test="@authType='external'">External</xsl:when>
379 <xsl:otherwise>
380 <xsl:message terminate="yes">
381Value '<xsl:value-of select="@authType"/>' of 'RemoteDisplay::authType' attribute is invalid.
382 </xsl:message>
383 </xsl:otherwise>
384 </xsl:choose>
385 </xsl:attribute>
386 </xsl:copy>
387</xsl:template>
388
389<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
390 vb:Machine//vb:BIOS/vb:BootMenu"
391 mode="v1.3">
392 <xsl:copy>
393 <xsl:apply-templates select="@*[not(name()='mode')]|node()" mode="v1.3"/>
394 <xsl:attribute name="mode">
395 <xsl:choose>
396 <xsl:when test="@mode='disabled'">Disabled</xsl:when>
397 <xsl:when test="@mode='menuonly'">MenuOnly</xsl:when>
398 <xsl:when test="@mode='messageandmenu'">MessageAndMenu</xsl:when>
399 <xsl:otherwise>
400 <xsl:message terminate="yes">
401Value '<xsl:value-of select="@mode"/>' of 'BootMenu::mode' attribute is invalid.
402 </xsl:message>
403 </xsl:otherwise>
404 </xsl:choose>
405 </xsl:attribute>
406 </xsl:copy>
407</xsl:template>
408
409<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
410 vb:Machine//vb:USBController/vb:DeviceFilter |
411 vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
412 vb:Global/vb:USBDeviceFilters/vb:DeviceFilter"
413 mode="v1.3">
414 <xsl:copy>
415 <xsl:apply-templates select="node()" mode="v1.3"/>
416 <xsl:for-each select="@*">
417 <xsl:choose>
418 <xsl:when test="name()='vendorid'">
419 <xsl:attribute name="vendorId"><xsl:value-of select="."/></xsl:attribute>
420 </xsl:when>
421 <xsl:when test="name()='productid'">
422 <xsl:attribute name="productId"><xsl:value-of select="."/></xsl:attribute>
423 </xsl:when>
424 <xsl:when test="name()='serialnumber'">
425 <xsl:attribute name="serialNumber"><xsl:value-of select="."/></xsl:attribute>
426 </xsl:when>
427 <xsl:otherwise>
428 <xsl:apply-templates select="." mode="v1.3"/>
429 </xsl:otherwise>
430 </xsl:choose>
431 </xsl:for-each>
432 </xsl:copy>
433</xsl:template>
434
435<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
436 vb:Machine//vb:Guest"
437 mode="v1.3">
438 <xsl:copy>
439 <xsl:apply-templates select="node()" mode="v1.3"/>
440 <xsl:for-each select="@*">
441 <xsl:choose>
442 <xsl:when test="name()='MemoryBalloonSize'">
443 <xsl:attribute name="memoryBalloonSize"><xsl:value-of select="."/></xsl:attribute>
444 </xsl:when>
445 <xsl:when test="name()='StatisticsUpdateInterval'">
446 <xsl:attribute name="statisticsUpdateInterval"><xsl:value-of select="."/></xsl:attribute>
447 </xsl:when>
448 <xsl:otherwise>
449 <xsl:apply-templates select="node()" mode="v1.3"/>
450 </xsl:otherwise>
451 </xsl:choose>
452 </xsl:for-each>
453 </xsl:copy>
454</xsl:template>
455
456<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
457 vb:Machine//vb:Uart"
458 mode="v1.3">
459 <UART>
460 <xsl:apply-templates select="@*|node()" mode="v1.3"/>
461 </UART>
462</xsl:template>
463
464<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3.pre']/
465 vb:Machine//vb:Lpt"
466 mode="v1.3">
467 <LPT>
468 <xsl:apply-templates select="@*|node()" mode="v1.3"/>
469 </LPT>
470</xsl:template>
471
472<!--
473 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
474 * 1.3 => 1.4
475 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
476-->
477
478<!--
479 * all non-root elements that are not explicitly matched are copied as is
480-->
481<xsl:template match="@*|node()[../..]" mode="v1.4">
482 <xsl:copy>
483 <xsl:apply-templates select="@*|node()[../..]" mode="v1.4"/>
484 </xsl:copy>
485</xsl:template>
486
487<!--
488 * Global settings
489-->
490
491<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
492 vb:Global/vb:DiskRegistry/vb:HardDisks/vb:HardDisk |
493 vb:VirtualBox[substring-before(@version,'-')='1.3']/
494 vb:Global/vb:DiskRegistry/vb:HardDisks//vb:DiffHardDisk"
495 mode="v1.4-HardDisk-format-location">
496 <xsl:attribute name="format">
497 <xsl:choose>
498 <xsl:when test="*[self::vb:VirtualDiskImage][1]">VDI</xsl:when>
499 <xsl:when test="*[self::vb:VMDKImage][1]">VMDK</xsl:when>
500 <xsl:when test="*[self::vb:VHDImage][1]">VHD</xsl:when>
501 <xsl:when test="*[self::vb:ISCSIHardDisk][1]">iSCSI</xsl:when>
502 <xsl:when test="*[self::vb:CustomHardDisk][1]">
503 <xsl:value-of select="@format"/>
504 </xsl:when>
505 <xsl:otherwise>
506 <xsl:message terminate="yes">
507Sub-element '<xsl:value-of select="name(*[1])"/>' of 'HardDisk' element is invalid.
508 </xsl:message>
509 </xsl:otherwise>
510 </xsl:choose>
511 </xsl:attribute>
512 <xsl:attribute name="location">
513 <xsl:choose>
514 <xsl:when test="*[self::vb:VirtualDiskImage][1]">
515 <xsl:value-of select="vb:VirtualDiskImage/@filePath"/>
516 </xsl:when>
517 <xsl:when test="*[self::vb:VMDKImage][1]">
518 <xsl:value-of select="vb:VMDKImage/@filePath"/>
519 </xsl:when>
520 <xsl:when test="*[self::vb:VHDImage][1]">
521 <xsl:value-of select="vb:VHDImage/@filePath"/>
522 </xsl:when>
523 <xsl:when test="*[self::vb:CustomHardDisk][1]">
524 <xsl:value-of select="vb:CustomHardDisk/@location"/>
525 </xsl:when>
526 <xsl:when test="*[self::vb:ISCSIHardDisk][1]">
527 <xsl:text>iscsi://</xsl:text>
528 <xsl:if test="vb:ISCSIHardDisk/@userName">
529 <xsl:value-of select="vb:ISCSIHardDisk/@userName"/>
530 <!-- note that for privacy reasons we don't show the password in the
531 location string -->
532 <xsl:text>@</xsl:text>
533 </xsl:if>
534 <xsl:if test="vb:ISCSIHardDisk/@server">
535 <xsl:value-of select="vb:ISCSIHardDisk/@server"/>
536 <xsl:if test="vb:ISCSIHardDisk/@port">
537 <xsl:value-of select="concat(':',vb:ISCSIHardDisk/@port)"/>
538 </xsl:if>
539 </xsl:if>
540 <xsl:if test="vb:ISCSIHardDisk/@target">
541 <xsl:value-of select="concat('/',vb:ISCSIHardDisk/@target)"/>
542 </xsl:if>
543 <xsl:if test="vb:ISCSIHardDisk/@lun">
544 <xsl:value-of select="concat('/enc',vb:ISCSIHardDisk/@lun)"/>
545 </xsl:if>
546 <xsl:if test="not(vb:ISCSIHardDisk/@server) or not(vb:ISCSIHardDisk/@target)">
547 <xsl:message terminate="yes">
548Required attribute 'server' or 'target' is missing from ISCSIHardDisk element!
549 </xsl:message>
550 </xsl:if>
551 </xsl:when>
552 </xsl:choose>
553 </xsl:attribute>
554 <xsl:if test="*[self::vb:ISCSIHardDisk][1]">
555 <xsl:choose>
556 <xsl:when test="vb:ISCSIHardDisk/@server and vb:ISCSIHardDisk/@port">
557 <xsl:element name="Property">
558 <xsl:attribute name="name">TargetAddress</xsl:attribute>
559 <xsl:attribute name="value">
560 <xsl:value-of select="concat(vb:ISCSIHardDisk/@server,
561 ':',vb:ISCSIHardDisk/@port)"/>
562 </xsl:attribute>
563 </xsl:element>
564 </xsl:when>
565 <xsl:when test="vb:ISCSIHardDisk/@server">
566 <xsl:element name="Property">
567 <xsl:attribute name="name">TargetAddress</xsl:attribute>
568 <xsl:attribute name="value">
569 <xsl:value-of select="vb:ISCSIHardDisk/@server"/>
570 </xsl:attribute>
571 </xsl:element>
572 </xsl:when>
573 </xsl:choose>
574 <xsl:if test="vb:ISCSIHardDisk/@target">
575 <xsl:element name="Property">
576 <xsl:attribute name="name">TargetName</xsl:attribute>
577 <xsl:attribute name="value">
578 <xsl:value-of select="vb:ISCSIHardDisk/@target"/>
579 </xsl:attribute>
580 </xsl:element>
581 </xsl:if>
582 <xsl:if test="vb:ISCSIHardDisk/@userName">
583 <xsl:element name="Property">
584 <xsl:attribute name="name">InitiatorUsername</xsl:attribute>
585 <xsl:attribute name="value">
586 <xsl:value-of select="vb:ISCSIHardDisk/@userName"/>
587 </xsl:attribute>
588 </xsl:element>
589 </xsl:if>
590 <xsl:if test="vb:ISCSIHardDisk/@password">
591 <xsl:element name="Property">
592 <xsl:attribute name="name">InitiatorSecret</xsl:attribute>
593 <xsl:attribute name="value">
594 <xsl:value-of select="vb:ISCSIHardDisk/@password"/>
595 </xsl:attribute>
596 </xsl:element>
597 </xsl:if>
598 <xsl:if test="vb:ISCSIHardDisk/@lun">
599 <xsl:element name="Property">
600 <xsl:attribute name="name">LUN</xsl:attribute>
601 <xsl:attribute name="value">
602 <xsl:value-of select="concat('enc',vb:ISCSIHardDisk/@lun)"/>
603 </xsl:attribute>
604 </xsl:element>
605 </xsl:if>
606 </xsl:if>
607</xsl:template>
608
609<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
610 vb:Global/vb:DiskRegistry/vb:HardDisks/vb:HardDisk"
611 mode="v1.4">
612 <HardDisk>
613 <xsl:attribute name="uuid"><xsl:value-of select="@uuid"/></xsl:attribute>
614 <xsl:attribute name="type">
615 <xsl:choose>
616 <xsl:when test="@type='normal'">Normal</xsl:when>
617 <xsl:when test="@type='immutable'">Immutable</xsl:when>
618 <xsl:when test="@type='writethrough'">Writethrough</xsl:when>
619 <xsl:otherwise>
620 <xsl:message terminate="yes">
621Value '<xsl:value-of select="@type"/>' of 'HardDisk::type' attribute is invalid.
622 </xsl:message>
623 </xsl:otherwise>
624 </xsl:choose>
625 </xsl:attribute>
626 <xsl:apply-templates select="." mode="v1.4-HardDisk-format-location"/>
627 <xsl:apply-templates select="vb:DiffHardDisk" mode="v1.4"/>
628 </HardDisk>
629</xsl:template>
630
631<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
632 vb:Global/vb:DiskRegistry/vb:HardDisks/vb:HardDisk//
633 vb:DiffHardDisk"
634 mode="v1.4">
635 <HardDisk>
636 <xsl:attribute name="uuid"><xsl:value-of select="@uuid"/></xsl:attribute>
637 <xsl:apply-templates select="." mode="v1.4-HardDisk-format-location"/>
638 <xsl:apply-templates select="vb:DiffHardDisk" mode="v1.4"/>
639 </HardDisk>
640</xsl:template>
641
642<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
643 vb:Global/vb:DiskRegistry/vb:DVDImages/vb:Image |
644 vb:VirtualBox[substring-before(@version,'-')='1.3']/
645 vb:Global/vb:DiskRegistry/vb:FloppyImages/vb:Image"
646 mode="v1.4">
647 <Image>
648 <xsl:attribute name="uuid"><xsl:value-of select="@uuid"/></xsl:attribute>
649 <xsl:attribute name="location"><xsl:value-of select="@src"/></xsl:attribute>
650 </Image>
651</xsl:template>
652
653<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
654 vb:Global/vb:DiskRegistry"
655 mode="v1.4">
656 <MediaRegistry>
657 <HardDisks>
658 <xsl:apply-templates select="vb:HardDisks/vb:HardDisk" mode="v1.4"/>
659 </HardDisks>
660 <DVDImages>
661 <xsl:apply-templates select="vb:DVDImages/vb:Image" mode="v1.4"/>
662 </DVDImages>
663 <FloppyImages>
664 <xsl:apply-templates select="vb:FloppyImages/vb:Image" mode="v1.4"/>
665 </FloppyImages>
666 </MediaRegistry>
667</xsl:template>
668
669<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
670 vb:Global/vb:SystemProperties"
671 mode="v1.4">
672 <SystemProperties>
673 <xsl:apply-templates select="@*[not(name()='defaultVDIFolder')]|node()" mode="v1.4"/>
674 <!-- use the @defaultVDIFolder value for @defaultHardDiskFolder only when it
675 differs from the default (VDI) and otherwise simply delete it to let
676 VBoxSVC set the correct new default value -->
677 <xsl:if test="@defaultVDIFolder and not(translate(@defaultVDIFolder,'vdi','VDI')='VDI')">
678 <xsl:attribute name="defaultHardDiskFolder">
679 <xsl:value-of select="@defaultVDIFolder"/>
680 </xsl:attribute>
681 </xsl:if>
682 </SystemProperties>
683</xsl:template>
684
685<!--
686 * Machine settings
687-->
688
689 <xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.3']/
690 vb:Machine/vb:Hardware"
691 mode="v1.4">
692 <!-- add version attribute to Hardware if parent Machine has a stateFile attribute -->
693 <xsl:copy>
694 <xsl:if test="../@stateFile">
695 <xsl:attribute name="version">1</xsl:attribute>
696 </xsl:if>
697 <xsl:apply-templates select="node()" mode="v1.4"/>
698 </xsl:copy>
699</xsl:template>
700
701
702<!--
703 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
704 * 1.4 => 1.5
705 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
706-->
707
708<!--
709 * all non-root elements that are not explicitly matched are copied as is
710-->
711<xsl:template match="@*|node()[../..]" mode="v1.5">
712 <xsl:copy>
713 <xsl:apply-templates select="@*|node()[../..]" mode="v1.5"/>
714 </xsl:copy>
715</xsl:template>
716
717<!--
718 * Global settings
719-->
720
721<!--
722 * Machine settings
723-->
724
725<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.4']/
726 vb:Machine"
727 mode="v1.5">
728 <xsl:copy>
729 <xsl:attribute name="OSType">
730 <xsl:choose>
731 <xsl:when test="@OSType='unknown'">Other</xsl:when>
732 <xsl:when test="@OSType='dos'">DOS</xsl:when>
733 <xsl:when test="@OSType='win31'">Windows31</xsl:when>
734 <xsl:when test="@OSType='win95'">Windows95</xsl:when>
735 <xsl:when test="@OSType='win98'">Windows98</xsl:when>
736 <xsl:when test="@OSType='winme'">WindowsMe</xsl:when>
737 <xsl:when test="@OSType='winnt4'">WindowsNT4</xsl:when>
738 <xsl:when test="@OSType='win2k'">Windows2000</xsl:when>
739 <xsl:when test="@OSType='winxp'">WindowsXP</xsl:when>
740 <xsl:when test="@OSType='win2k3'">Windows2003</xsl:when>
741 <xsl:when test="@OSType='winvista'">WindowsVista</xsl:when>
742 <xsl:when test="@OSType='win2k8'">Windows2008</xsl:when>
743 <xsl:when test="@OSType='os2warp3'">OS2Warp3</xsl:when>
744 <xsl:when test="@OSType='os2warp4'">OS2Warp4</xsl:when>
745 <xsl:when test="@OSType='os2warp45'">OS2Warp45</xsl:when>
746 <xsl:when test="@OSType='ecs'">OS2eCS</xsl:when>
747 <xsl:when test="@OSType='linux22'">Linux22</xsl:when>
748 <xsl:when test="@OSType='linux24'">Linux24</xsl:when>
749 <xsl:when test="@OSType='linux26'">Linux26</xsl:when>
750 <xsl:when test="@OSType='archlinux'">ArchLinux</xsl:when>
751 <xsl:when test="@OSType='debian'">Debian</xsl:when>
752 <xsl:when test="@OSType='opensuse'">OpenSUSE</xsl:when>
753 <xsl:when test="@OSType='fedoracore'">Fedora</xsl:when>
754 <xsl:when test="@OSType='gentoo'">Gentoo</xsl:when>
755 <xsl:when test="@OSType='mandriva'">Mandriva</xsl:when>
756 <xsl:when test="@OSType='redhat'">RedHat</xsl:when>
757 <xsl:when test="@OSType='ubuntu'">Ubuntu</xsl:when>
758 <xsl:when test="@OSType='xandros'">Xandros</xsl:when>
759 <xsl:when test="@OSType='freebsd'">FreeBSD</xsl:when>
760 <xsl:when test="@OSType='openbsd'">OpenBSD</xsl:when>
761 <xsl:when test="@OSType='netbsd'">NetBSD</xsl:when>
762 <xsl:when test="@OSType='netware'">Netware</xsl:when>
763 <xsl:when test="@OSType='solaris'">Solaris</xsl:when>
764 <xsl:when test="@OSType='opensolaris'">OpenSolaris</xsl:when>
765 <xsl:when test="@OSType='l4'">L4</xsl:when>
766 </xsl:choose>
767 </xsl:attribute>
768 <xsl:apply-templates select="@*[name()!='OSType']" mode="v1.5"/>
769 <xsl:apply-templates select="node()" mode="v1.5"/>
770 </xsl:copy>
771</xsl:template>
772
773<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.4']/
774 vb:Machine//vb:Hardware/vb:Display"
775 mode="v1.5">
776 <xsl:copy>
777 <xsl:apply-templates select="node()" mode="v1.5"/>
778 <xsl:for-each select="@*">
779 <xsl:choose>
780 <xsl:when test="name()='MonitorCount'">
781 <xsl:attribute name="monitorCount"><xsl:value-of select="."/></xsl:attribute>
782 </xsl:when>
783 <xsl:when test="name()='Accelerate3D'">
784 <xsl:attribute name="accelerate3D"><xsl:value-of select="."/></xsl:attribute>
785 </xsl:when>
786 <xsl:otherwise>
787 <xsl:apply-templates select="." mode="v1.5"/>
788 </xsl:otherwise>
789 </xsl:choose>
790 </xsl:for-each>
791 </xsl:copy>
792</xsl:template>
793
794<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.4']/
795 vb:Machine//vb:Hardware/vb:CPU"
796 mode="v1.5">
797 <xsl:copy>
798 <xsl:if test="vb:CPUCount/@count">
799 <xsl:attribute name="count"><xsl:value-of select="vb:CPUCount/@count"/></xsl:attribute>
800 </xsl:if>
801 <xsl:apply-templates select="@*" mode="v1.5"/>
802 <xsl:apply-templates select="node()[not(self::vb:CPUCount)]" mode="v1.5"/>
803 </xsl:copy>
804</xsl:template>
805
806
807<!--
808 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
809 * 1.5 => 1.6
810 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
811-->
812
813
814<!--
815 * all non-root elements that are not explicitly matched are copied as is
816-->
817<xsl:template match="@*|node()[../..]" mode="v1.6">
818 <xsl:copy>
819 <xsl:apply-templates select="@*|node()[../..]" mode="v1.6"/>
820 </xsl:copy>
821</xsl:template>
822
823<!--
824 * Global settings
825-->
826
827<!--
828 * Machine settings
829-->
830
831<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.5' and
832 not(substring-after(@version,'-')='windows')]/
833 vb:Machine//vb:Hardware/vb:Network/vb:Adapter/
834 vb:HostInterface[@TAPSetup or @TAPTerminate]"
835 mode="v1.6">
836 <!-- just remove the node -->
837</xsl:template>
838
839
840<!--
841 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
842 * 1.6 => 1.7
843 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
844-->
845<!--
846 * all non-root elements that are not explicitly matched are copied as is
847-->
848<xsl:template match="@*|node()[../..]" mode="v1.7">
849 <xsl:copy>
850 <xsl:apply-templates select="@*|node()[../..]" mode="v1.7"/>
851 </xsl:copy>
852</xsl:template>
853
854<!--
855 * Global settings
856-->
857<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.6']/
858 vb:Global"
859 mode="v1.7" >
860 <xsl:copy>
861 <xsl:apply-templates mode="v1.7" />
862 <NetserviceRegistry>
863 <DHCPServers>
864 <xsl:choose>
865 <xsl:when test="substring-after(../@version,'-')='windows'">
866 <DHCPServer networkName="HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter"
867 IPAddress="192.168.56.100" networkMask="255.255.255.0"
868 lowerIP="192.168.56.101" upperIP="192.168.56.254"
869 enabled="1"/>
870 </xsl:when>
871 <xsl:otherwise>
872 <DHCPServer networkName="HostInterfaceNetworking-vboxnet0"
873 IPAddress="192.168.56.2" networkMask="255.255.255.0"
874 lowerIP="192.168.56.3" upperIP="192.168.56.255"
875 enabled="1"/>
876 </xsl:otherwise>
877 </xsl:choose>
878 </DHCPServers>
879 </NetserviceRegistry>
880 </xsl:copy>
881</xsl:template>
882
883<!--
884 * Machine settings
885-->
886<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.6']/
887 vb:Machine/vb:Snapshots"
888 mode="v1.7">
889 <xsl:for-each select="vb:Snapshot">
890 <xsl:apply-templates select="." mode="v1.7"/>
891 </xsl:for-each>
892</xsl:template>
893
894<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.6']/
895 vb:Machine/vb:HardDiskAttachments |
896 vb:VirtualBox[substring-before(@version,'-')='1.6']/
897 vb:Machine/vb:Snapshot/vb:HardDiskAttachments |
898 vb:VirtualBox[substring-before(@version,'-')='1.6']/
899 vb:Machine/vb:Snapshot/vb:Snapshots//vb:Snapshot/vb:HardDiskAttachments"
900 mode="v1.7">
901 <StorageControllers>
902 <StorageController name="IDE Controller">
903 <xsl:choose>
904 <xsl:when test="not(../vb:Hardware/vb:BIOS/vb:IDEController)">
905 <xsl:attribute name="type">PIIX3</xsl:attribute>
906 </xsl:when>
907 <xsl:otherwise>
908 <xsl:attribute name="type"><xsl:value-of select="../vb:Hardware/vb:BIOS/vb:IDEController/@type"/></xsl:attribute>
909 </xsl:otherwise>
910 </xsl:choose>
911 <xsl:attribute name="PortCount">2</xsl:attribute>
912 <xsl:for-each select="./vb:HardDiskAttachment[@bus = 'IDE']">
913 <xsl:apply-templates select="." mode="v1.7-attached-device"/>
914 </xsl:for-each>
915 </StorageController>
916 <xsl:if test="../vb:Hardware/vb:SATAController/@enabled='true'">
917 <StorageController name="SATA">
918 <xsl:attribute name="type">AHCI</xsl:attribute>
919 <xsl:attribute name="PortCount">
920 <xsl:value-of select="../vb:Hardware/vb:SATAController/@PortCount"/>
921 </xsl:attribute>
922 <xsl:attribute name="IDE0MasterEmulationPort">
923 <xsl:value-of select="../vb:Hardware/vb:SATAController/@IDE0MasterEmulationPort"/>
924 </xsl:attribute>
925 <xsl:attribute name="IDE0SlaveEmulationPort">
926 <xsl:value-of select="../vb:Hardware/vb:SATAController/@IDE0SlaveEmulationPort"/>
927 </xsl:attribute>
928 <xsl:attribute name="IDE1MasterEmulationPort">
929 <xsl:value-of select="../vb:Hardware/vb:SATAController/@IDE1MasterEmulationPort"/>
930 </xsl:attribute>
931 <xsl:attribute name="IDE1SlaveEmulationPort">
932 <xsl:value-of select="../vb:Hardware/vb:SATAController/@IDE1SlaveEmulationPort"/>
933 </xsl:attribute>
934 <xsl:for-each select="./vb:HardDiskAttachment[@bus = 'SATA']">
935 <xsl:apply-templates select="." mode="v1.7-attached-device"/>
936 </xsl:for-each>
937 </StorageController>
938 </xsl:if>
939 </StorageControllers>
940</xsl:template>
941
942<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.6']/
943 vb:Machine/vb:HardDiskAttachments/vb:HardDiskAttachment |
944 vb:VirtualBox[substring-before(@version,'-')='1.6']/
945 vb:Machine/vb:Snapshot/vb:HardDiskAttachments/vb:HardDiskAttachment |
946 vb:VirtualBox[substring-before(@version,'-')='1.6']/
947 vb:Machine/vb:Snapshot/vb:Snapshots//vb:Snapshot/vb:HardDiskAttachments/
948 vb:HardDiskAttachment"
949 mode="v1.7-attached-device">
950 <AttachedDevice>
951 <xsl:attribute name="type">HardDisk</xsl:attribute>
952 <xsl:attribute name="port"><xsl:value-of select="@channel"/></xsl:attribute>
953 <xsl:attribute name="device"><xsl:value-of select="@device"/></xsl:attribute>
954 <xsl:element name="Image">
955 <xsl:attribute name="uuid"><xsl:value-of select="@hardDisk"/></xsl:attribute>
956 </xsl:element>
957 </AttachedDevice>
958</xsl:template>
959
960<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.6']/
961 vb:Machine//vb:Hardware/vb:BIOS/vb:IDEController |
962 vb:VirtualBox[substring-before(@version,'-')='1.6']/
963 vb:Machine//vb:Snapshot/vb:Hardware/vb:BIOS/vb:IDEController |
964 vb:VirtualBox[substring-before(@version,'-')='1.6']/
965 vb:Machine/vb:Snapshot/vb:Snapshots//vb:Snapshot/vb:Hardware/vb:BIOS/vb:IDEController"
966 mode="v1.7">
967 <!-- just remove the node -->
968</xsl:template>
969
970<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.6']/
971 vb:Machine/vb:Hardware/vb:SATAController |
972 vb:VirtualBox[substring-before(@version,'-')='1.6']/
973 vb:Machine/vb:Snapshot/vb:Hardware/vb:SATAController |
974 vb:VirtualBox[substring-before(@version,'-')='1.6']/
975 vb:Machine/vb:Snapshot/vb:Snapshots//vb:Snapshot/vb:Hardware/vb:SATAController"
976 mode="v1.7">
977 <!-- just remove the node -->
978</xsl:template>
979
980<!--
981 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
982 * 1.7 => 1.8
983 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
984-->
985<!--
986 * all non-root elements that are not explicitly matched are copied as is
987-->
988<xsl:template match="@*|node()[../..]" mode="v1.8">
989 <xsl:copy>
990 <xsl:apply-templates select="@*|node()[../..]" mode="v1.8"/>
991 </xsl:copy>
992</xsl:template>
993
994<!--
995 * Global settings
996-->
997
998<!--
999 * Machine settings
1000-->
1001
1002<!--xsl:template match="vb:VirtualBox[substring-before(@version,'-')='1.7']/
1003 vb:Machine//vb:Hardware/vb:Display"
1004 mode="v1.8">
1005 <xsl:copy>
1006 <xsl:apply-templates select="node()" mode="v1.8"/>
1007 <xsl:for-each select="@*">
1008 <xsl:choose>
1009 <xsl:when test="name()='Accelerate2DVideo'">
1010 <xsl:attribute name="accelerate2DVideo"><xsl:value-of select="."/></xsl:attribute>
1011 </xsl:when>
1012 <xsl:otherwise>
1013 <xsl:apply-templates select="." mode="v1.8"/>
1014 </xsl:otherwise>
1015 </xsl:choose>
1016 </xsl:for-each>
1017 </xsl:copy>
1018</xsl:template-->
1019
1020<!--
1021 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1022-->
1023
1024
1025<!-- @todo add lastStateChange with the current timestamp if missing.
1026 * current-dateTime() is available only in XPath 2.0 so we will need to pass
1027 * the current time as a parameter to the XSLT processor. -->
1028<!--
1029<xsl:template match="vb:VirtualBox[substring-before(@version,'-')='Xo.Yo']/
1030 vb:Machine"
1031 mode="X.Y">
1032 <xsl:copy>
1033 <xsl:if test="not(@lastStateChange)">
1034 <xsl:attribute name="lastStateChange">
1035 <xsl:value-of select="current-dateTime()"/>
1036 </xsl:attribute>
1037 </xsl:if>
1038 <xsl:apply-templates select="@*|node()" mode="vX.Y"/>
1039 </xsl:copy>
1040</xsl:template>
1041-->
1042
1043</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette