1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/examples/Common/Configurator/Resources/config_accessories.xml Mon Oct 03 19:12:41 2005 +0000 1.3 @@ -0,0 +1,7 @@ 1.4 +<?xml version="1.0"?> 1.5 +<accessories> 1.6 + <accessory-enum value="(Not selected)" price="0"/> 1.7 + <accessory-enum value="DVD+R 10 pack" price="100" storage="DVD+-RW 8x"/> 1.8 + <accessory-enum value="DVD+RW 10 pack" price="200" storage="DVD+-RW 8x"/> 1.9 + <accessory-enum value="CD-RW 10 pack" price="50" storage="CD-RW 48x/24x/48x"/> 1.10 +</accessories>
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/examples/Common/Configurator/Resources/config_base_system.xml Mon Oct 03 19:12:41 2005 +0000 2.3 @@ -0,0 +1,8 @@ 2.4 +<?xml version="1.0"?> 2.5 +<base-system> 2.6 + <base-system-enum value="(Not selected)" price="0"/> 2.7 + <base-system-enum value="Shuttle SB61G2V3" price="2174" cpu-socket="478" interface="SATA-150"/> 2.8 + <base-system-enum value="Shuttle SS56GV3" price="2000" cpu-socket="478" interface="ATA-133"/> 2.9 + <base-system-enum value="Shuttle ST62K" price="2000" cpu-socket="478" interface="ATA-100"/> 2.10 + <base-system-enum value="Soltek Qbic EQ3901" price="2500" cpu-socket="939" interface="SATA-150"/> 2.11 +</base-system>
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/examples/Common/Configurator/Resources/config_cpu.xml Mon Oct 03 19:12:41 2005 +0000 3.3 @@ -0,0 +1,7 @@ 3.4 +<?xml version="1.0"?> 3.5 +<cpu> 3.6 + <cpu-enum value="(Not selected)" price="0"/> 3.7 + <cpu-enum value="Pentium 4 3.0 GHz" price="1650" cpu-socket="478"/> 3.8 + <cpu-enum value="Athlon 3000+" price="1500" cpu-socket="A"/> 3.9 + <cpu-enum value="Athlon 64 3500+" price="2300" cpu-socket="939"/> 3.10 +</cpu>
4.1 --- a/examples/Common/Configurator/Resources/config_database.xml Mon Oct 03 19:11:12 2005 +0000 4.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 4.3 @@ -1,51 +0,0 @@ 4.4 -<?xml version="1.0"?> 4.5 -<database> 4.6 - <base-system> 4.7 - <base-system-enum value="(Not selected)" price="0"/> 4.8 - <base-system-enum value="Shuttle SB61G2V3" price="2174" cpu-socket="478" interface="SATA-150"/> 4.9 - <base-system-enum value="Shuttle SS56GV3" price="2000" cpu-socket="478" interface="ATA-133"/> 4.10 - <base-system-enum value="Shuttle ST62K" price="2000" cpu-socket="478" interface="ATA-100"/> 4.11 - <base-system-enum value="Soltek Qbic EQ3901" price="2500" cpu-socket="939" interface="SATA-150"/> 4.12 - </base-system> 4.13 - <cpu> 4.14 - <cpu-enum value="(Not selected)" price="0"/> 4.15 - <cpu-enum value="Pentium 4 3.0 GHz" price="1650" cpu-socket="478"/> 4.16 - <cpu-enum value="Athlon 3000+" price="1500" cpu-socket="A"/> 4.17 - <cpu-enum value="Athlon 64 3500+" price="2300" cpu-socket="939"/> 4.18 - </cpu> 4.19 - <memory-unit> 4.20 - <memory-unit-enum value="(Not selected)" price="0"/> 4.21 - <memory-unit-enum value="PC3200 DDR RAM 256MB" price="500"/> 4.22 - <memory-unit-enum value="PC3200 DDR RAM 512MB" price="800"/> 4.23 - </memory-unit> 4.24 - <storage-unit> 4.25 - <storage-unit-enum value="(Not selected)" price="0"/> 4.26 - <storage-unit-enum value="CD-ROM 48x" price="200"/> 4.27 - <storage-unit-enum value="CD-RW 48x/24x/48x" price="400"/> 4.28 - <storage-unit-enum value="DVD+-RW 8x" price="750"/> 4.29 - </storage-unit> 4.30 - <hard-disk> 4.31 - <hard-disk-enum value="(Not selected)" price="0"/> 4.32 - <hard-disk-enum value="SATA-150 80GB" price="700" interface="SATA-150"/> 4.33 - <hard-disk-enum value="SATA-150 160GB" price="1200" interface="SATA-150"/> 4.34 - <hard-disk-enum value="ATA-133 80GB" price="600" interface="ATA-133"/> 4.35 - <hard-disk-enum value="ATA-133 160GB" price="1000" interface="ATA-133"/> 4.36 - <hard-disk-enum value="ATA-100 80GB" price="500" interface="ATA-100"/> 4.37 - <hard-disk-enum value="ATA-100 160GB" price="800" interface="ATA-100"/> 4.38 - </hard-disk> 4.39 - <keyboard> 4.40 - <keyboard-enum value="(Not selected)" price="0"/> 4.41 - </keyboard> 4.42 - <mouse> 4.43 - <mouse-enum value="(Not selected)" price="0"/> 4.44 - </mouse> 4.45 - <screen> 4.46 - <screen-enum value="(Not selected)" price="0"/> 4.47 - </screen> 4.48 - <accessories> 4.49 - <accessory-enum value="(Not selected)" price="0"/> 4.50 - <accessory-enum value="DVD+R 10 pack" price="100" storage="DVD+-RW 8x"/> 4.51 - <accessory-enum value="DVD+RW 10 pack" price="200" storage="DVD+-RW 8x"/> 4.52 - <accessory-enum value="CD-RW 10 pack" price="50" storage="CD-RW 48x/24x/48x"/> 4.53 - </accessories> 4.54 -</database>
5.1 --- a/examples/Common/Configurator/Resources/config_database.xsl Mon Oct 03 19:11:12 2005 +0000 5.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 5.3 @@ -1,151 +0,0 @@ 5.4 -<?xml version="1.0" encoding="utf-8"?> 5.5 -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 5.6 - version="1.0"> 5.7 - 5.8 - <xsl:param name="database"/> 5.9 - 5.10 - <xsl:template match="configuration"> 5.11 - <xsl:copy> 5.12 - <xsl:apply-templates select="@*"/> 5.13 - <!-- Find out some additional information. --> 5.14 - <xsl:variable name="cpu-socket" select="$database/database/base-system/base-system-enum[@value = current()/details/base-system/@value]/@cpu-socket"/> 5.15 - <xsl:variable name="interface" select="$database/database/base-system/base-system-enum[@value = current()/details/base-system/@value]/@interface"/> 5.16 - <!-- Complete all multiple choice fields. --> 5.17 - <details> 5.18 - <base-system> 5.19 - <xsl:variable name="value" select="details/base-system/@value"/> 5.20 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.21 - <xsl:for-each select="$database/database/base-system/base-system-enum"> 5.22 - <xsl:copy> 5.23 - <xsl:apply-templates select="@*"/> 5.24 - <xsl:if test="@value = $value"> 5.25 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.26 - </xsl:if> 5.27 - </xsl:copy> 5.28 - </xsl:for-each> 5.29 - </base-system> 5.30 - <cpu> 5.31 - <xsl:variable name="value" select="details/cpu/@value"/> 5.32 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.33 - <xsl:for-each select="$database/database/cpu/cpu-enum[@cpu-socket = $cpu-socket or not(@cpu-socket)]"> 5.34 - <xsl:copy> 5.35 - <xsl:apply-templates select="@*"/> 5.36 - <xsl:if test="@value = $value"> 5.37 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.38 - </xsl:if> 5.39 - </xsl:copy> 5.40 - </xsl:for-each> 5.41 - </cpu> 5.42 - </details> 5.43 - <memory> 5.44 - <xsl:for-each select="memory/memory-unit"> 5.45 - <xsl:copy> 5.46 - <xsl:variable name="value" select="@value"/> 5.47 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.48 - <xsl:for-each select="$database/database/memory-unit/memory-unit-enum"> 5.49 - <xsl:copy> 5.50 - <xsl:apply-templates select="@*"/> 5.51 - <xsl:if test="@value = $value"> 5.52 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.53 - </xsl:if> 5.54 - </xsl:copy> 5.55 - </xsl:for-each> 5.56 - </xsl:copy> 5.57 - </xsl:for-each> 5.58 - </memory> 5.59 - <hard-disks> 5.60 - <xsl:for-each select="hard-disks/hard-disk"> 5.61 - <xsl:copy> 5.62 - <xsl:variable name="value" select="@value"/> 5.63 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.64 - <xsl:for-each select="$database/database/hard-disk/hard-disk-enum[@interface = $interface or not(@interface)]"> 5.65 - <xsl:copy> 5.66 - <xsl:apply-templates select="@*"/> 5.67 - <xsl:if test="@value = $value"> 5.68 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.69 - </xsl:if> 5.70 - </xsl:copy> 5.71 - </xsl:for-each> 5.72 - </xsl:copy> 5.73 - </xsl:for-each> 5.74 - </hard-disks> 5.75 - <storage> 5.76 - <xsl:for-each select="storage/storage-unit"> 5.77 - <xsl:copy> 5.78 - <xsl:variable name="value" select="@value"/> 5.79 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.80 - <xsl:for-each select="$database/database/storage-unit/storage-unit-enum"> 5.81 - <xsl:copy> 5.82 - <xsl:apply-templates select="@*"/> 5.83 - <xsl:if test="@value = $value"> 5.84 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.85 - </xsl:if> 5.86 - </xsl:copy> 5.87 - </xsl:for-each> 5.88 - </xsl:copy> 5.89 - </xsl:for-each> 5.90 - </storage> 5.91 - <accessories> 5.92 - <xsl:variable name="values" select="accessories/accessory-enum/@value"/> 5.93 - <xsl:variable name="storage-values" select="storage/storage-unit/@value"/> 5.94 - <xsl:for-each select="$database/database/accessories/accessory-enum"> 5.95 - <xsl:if test="$storage-values[string() = current()/@storage] or not(@storage)"> 5.96 - <xsl:copy> 5.97 - <xsl:apply-templates select="@*"/> 5.98 - <xsl:if test="$values[string() = current()/@value]"> 5.99 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.100 - </xsl:if> 5.101 - </xsl:copy> 5.102 - </xsl:if> 5.103 - </xsl:for-each> 5.104 - </accessories> 5.105 - <peripherals> 5.106 - <keyboard> 5.107 - <xsl:variable name="value" select="peripherals/keyboard/@value"/> 5.108 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.109 - <xsl:for-each select="$database/database/keyboard/keyboard-enum"> 5.110 - <xsl:copy> 5.111 - <xsl:apply-templates select="@*"/> 5.112 - <xsl:if test="@value = $value"> 5.113 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.114 - </xsl:if> 5.115 - </xsl:copy> 5.116 - </xsl:for-each> 5.117 - </keyboard> 5.118 - <mouse> 5.119 - <xsl:variable name="value" select="peripherals/mouse/@value"/> 5.120 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.121 - <xsl:for-each select="$database/database/mouse/mouse-enum"> 5.122 - <xsl:copy> 5.123 - <xsl:apply-templates select="@*"/> 5.124 - <xsl:if test="@value = $value"> 5.125 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.126 - </xsl:if> 5.127 - </xsl:copy> 5.128 - </xsl:for-each> 5.129 - </mouse> 5.130 - <screen> 5.131 - <xsl:variable name="value" select="peripherals/screen/@value"/> 5.132 - <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute> 5.133 - <xsl:for-each select="$database/database/screen/screen-enum"> 5.134 - <xsl:copy> 5.135 - <xsl:apply-templates select="@*"/> 5.136 - <xsl:if test="@value = $value"> 5.137 - <xsl:attribute name="value-is-set">true</xsl:attribute> 5.138 - </xsl:if> 5.139 - </xsl:copy> 5.140 - </xsl:for-each> 5.141 - </screen> 5.142 - </peripherals> 5.143 - </xsl:copy> 5.144 - </xsl:template> 5.145 - 5.146 - <!-- Replicate unknown elements. --> 5.147 - 5.148 - <xsl:template match="@*|node()"> 5.149 - <xsl:copy> 5.150 - <xsl:apply-templates select="@*|node()"/> 5.151 - </xsl:copy> 5.152 - </xsl:template> 5.153 - 5.154 -</xsl:stylesheet>
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/examples/Common/Configurator/Resources/config_example.xml Mon Oct 03 19:12:41 2005 +0000 6.3 @@ -0,0 +1,11 @@ 6.4 +<?xml version="1.0"?> 6.5 +<configuration> 6.6 + <details> 6.7 + <base-system value="Shuttle SB65G2"/> 6.8 + <cpu value="Pentium 4 3.0 GHz"/> 6.9 + </details> 6.10 + <memory> 6.11 + <memory-unit value="PC3200 DDR RAM 512MB"/> 6.12 + <memory-unit value="PC3200 DDR RAM 256MB"/> 6.13 + </memory> 6.14 +</configuration>
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 7.2 +++ b/examples/Common/Configurator/Resources/config_filter.xsl Mon Oct 03 19:12:41 2005 +0000 7.3 @@ -0,0 +1,52 @@ 7.4 +<?xml version="1.0" encoding="utf-8"?> 7.5 +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 7.6 + version="1.0"> 7.7 + 7.8 + <!-- Find out some additional information. --> 7.9 + 7.10 + <xsl:variable name="cpu-socket" select="configuration/details/base-system/base-system-enum[@value = ../@value]/@cpu-socket"/> 7.11 + <xsl:variable name="interface" select="configuration/details/base-system/base-system-enum[@value = ../@value]/@interface"/> 7.12 + <xsl:variable name="storage" select="configuration/storage/storage-unit/@value"/> 7.13 + 7.14 + 7.15 + 7.16 + <!-- Descend into the document, including only relevant elements. --> 7.17 + 7.18 + <xsl:template match="cpu-enum"> 7.19 + <xsl:if test="@cpu-socket = $cpu-socket or not(@cpu-socket)"> 7.20 + <cpu-enum> 7.21 + <xsl:apply-templates select="@*"/> 7.22 + <xsl:apply-templates select="*"/> 7.23 + </cpu-enum> 7.24 + </xsl:if> 7.25 + </xsl:template> 7.26 + 7.27 + <xsl:template match="hard-disk-enum"> 7.28 + <xsl:if test="@interface = $interface or not(@interface)"> 7.29 + <hard-disk-enum> 7.30 + <xsl:apply-templates select="@*"/> 7.31 + <xsl:apply-templates select="*"/> 7.32 + </hard-disk-enum> 7.33 + </xsl:if> 7.34 + </xsl:template> 7.35 + 7.36 + <xsl:template match="accessory-enum"> 7.37 + <xsl:if test="$storage[string() = current()/@storage] or not(@storage)"> 7.38 + <accessory-enum> 7.39 + <xsl:apply-templates select="@*"/> 7.40 + <xsl:apply-templates select="*"/> 7.41 + </accessory-enum> 7.42 + </xsl:if> 7.43 + </xsl:template> 7.44 + 7.45 + 7.46 + 7.47 + <!-- Replicate unknown elements. --> 7.48 + 7.49 + <xsl:template match="@*|node()"> 7.50 + <xsl:copy> 7.51 + <xsl:apply-templates select="@*|node()"/> 7.52 + </xsl:copy> 7.53 + </xsl:template> 7.54 + 7.55 +</xsl:stylesheet>
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 8.2 +++ b/examples/Common/Configurator/Resources/config_hard_disk.xml Mon Oct 03 19:12:41 2005 +0000 8.3 @@ -0,0 +1,10 @@ 8.4 +<?xml version="1.0"?> 8.5 +<hard-disk> 8.6 + <hard-disk-enum value="(Not selected)" price="0"/> 8.7 + <hard-disk-enum value="SATA-150 80GB" price="700" interface="SATA-150"/> 8.8 + <hard-disk-enum value="SATA-150 160GB" price="1200" interface="SATA-150"/> 8.9 + <hard-disk-enum value="ATA-133 80GB" price="600" interface="ATA-133"/> 8.10 + <hard-disk-enum value="ATA-133 160GB" price="1000" interface="ATA-133"/> 8.11 + <hard-disk-enum value="ATA-100 80GB" price="500" interface="ATA-100"/> 8.12 + <hard-disk-enum value="ATA-100 160GB" price="800" interface="ATA-100"/> 8.13 +</hard-disk>
9.1 --- a/examples/Common/Configurator/Resources/config_input.xml Mon Oct 03 19:11:12 2005 +0000 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,11 +0,0 @@ 9.4 -<?xml version="1.0"?> 9.5 -<configuration> 9.6 - <details> 9.7 - <base-system value="Shuttle SB65G2"/> 9.8 - <cpu value="Pentium 4 3.0 GHz"/> 9.9 - </details> 9.10 - <memory> 9.11 - <memory-unit value="PC3200 DDR RAM 512MB"/> 9.12 - <memory-unit value="PC3200 DDR RAM 256MB"/> 9.13 - </memory> 9.14 -</configuration>
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/examples/Common/Configurator/Resources/config_keyboard.xml Mon Oct 03 19:12:41 2005 +0000 10.3 @@ -0,0 +1,8 @@ 10.4 +<?xml version="1.0"?> 10.5 +<keyboard> 10.6 + <keyboard-enum value="(Not selected)" price="0"/> 10.7 + <keyboard-enum value="PS/2 Danish" price="50"/> 10.8 + <keyboard-enum value="PS/2 Norwegian" price="50"/> 10.9 + <keyboard-enum value="PS/2 Swedish" price="50"/> 10.10 + <keyboard-enum value="PS/2 United Kingdom" price="50"/> 10.11 +</keyboard>
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/examples/Common/Configurator/Resources/config_memory_unit.xml Mon Oct 03 19:12:41 2005 +0000 11.3 @@ -0,0 +1,6 @@ 11.4 +<?xml version="1.0"?> 11.5 +<memory-unit> 11.6 + <memory-unit-enum value="(Not selected)" price="0"/> 11.7 + <memory-unit-enum value="PC3200 DDR RAM 256MB" price="500"/> 11.8 + <memory-unit-enum value="PC3200 DDR RAM 512MB" price="800"/> 11.9 +</memory-unit>
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/examples/Common/Configurator/Resources/config_mouse.xml Mon Oct 03 19:12:41 2005 +0000 12.3 @@ -0,0 +1,6 @@ 12.4 +<?xml version="1.0"?> 12.5 +<mouse> 12.6 + <mouse-enum value="(Not selected)" price="0"/> 12.7 + <mouse-enum value="2 button PS/2" price="70"/> 12.8 + <mouse-enum value="3 button PS/2" price="80"/> 12.9 +</mouse>
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/examples/Common/Configurator/Resources/config_screen.xml Mon Oct 03 19:12:41 2005 +0000 13.3 @@ -0,0 +1,6 @@ 13.4 +<?xml version="1.0"?> 13.5 +<screen> 13.6 + <screen-enum value="(Not selected)" price="0"/> 13.7 + <screen-enum value="17 inch LCD" price="2000"/> 13.8 + <screen-enum value="19 inch LCD" price="3000"/> 13.9 +</screen>
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 14.2 +++ b/examples/Common/Configurator/Resources/config_storage_unit.xml Mon Oct 03 19:12:41 2005 +0000 14.3 @@ -0,0 +1,7 @@ 14.4 +<?xml version="1.0"?> 14.5 +<storage-unit> 14.6 + <storage-unit-enum value="(Not selected)" price="0"/> 14.7 + <storage-unit-enum value="CD-ROM 48x" price="200"/> 14.8 + <storage-unit-enum value="CD-RW 48x/24x/48x" price="400"/> 14.9 + <storage-unit-enum value="DVD+-RW 8x" price="750"/> 14.10 +</storage-unit>
15.1 --- a/examples/Common/Configurator/Resources/config_template.xhtml Mon Oct 03 19:11:12 2005 +0000 15.2 +++ b/examples/Common/Configurator/Resources/config_template.xhtml Mon Oct 03 19:12:41 2005 +0000 15.3 @@ -19,8 +19,8 @@ 15.4 <div template:element="details" class="details"> 15.5 <h2>Base System</h2> 15.6 15.7 - <p template:element="base-system">Model 15.8 - <select template:attribute="value" name="{template:this-attribute()}" 15.9 + <p>Model 15.10 + <select template:multiple-choice-field="base-system,value" name="..." 15.11 onchange=" 15.12 requestUpdate('cpu', '{template:this-attribute()}', 15.13 '{template:other-elements(../cpu)}', '{template:other-attributes('value', ../cpu)}', 15.14 @@ -31,17 +31,15 @@ 15.15 requestUpdate('hard-disks', '{template:this-attribute()}', 15.16 '{template:other-elements(../../hard-disks)}', 15.17 '{template:other-attributes('value', ../../hard-disks/hard-disk)}', '/configuration/hard-disks')"> 15.18 - <option template:element="base-system-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.19 - value="{@value}"></option> 15.20 + <option template:multiple-choice-value="base-system-enum,value,selected" value="..."></option> 15.21 </select> 15.22 </p> 15.23 15.24 <h2>Processor</h2> 15.25 15.26 <p template:element="cpu" template:id="cpu-node" id="{template:this-element()}">CPU 15.27 - <select template:attribute="value" name="{template:this-attribute()}"> 15.28 - <option template:element="cpu-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.29 - value="{@value}"></option> 15.30 + <select template:multiple-choice-field="-,value" name="..."> 15.31 + <option template:multiple-choice-value="cpu-enum,value,selected" value="..."></option> 15.32 </select> 15.33 </p> 15.34 </div> 15.35 @@ -51,18 +49,15 @@ 15.36 15.37 <div template:id="memory-node" id="{template:this-element()}"> 15.38 <p template:element="memory-unit">Memory unit 15.39 - <select template:attribute="value" name="{template:this-attribute()}"> 15.40 - <option template:element="memory-unit-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.41 - value="{@value}"></option> 15.42 + <select template:multiple-choice-field="-,value" name="..."> 15.43 + <option template:multiple-choice-value="memory-unit-enum,value,selected" value="..."></option> 15.44 </select> 15.45 15.46 - <input type="submit" value="Remove" 15.47 - name="remove-memory-unit={template:this-element()}" /> 15.48 + <input type="submit" value="Remove" name="..." template:selector-field="remove-memory-unit" /> 15.49 </p> 15.50 15.51 <p> 15.52 - <input type="submit" value="Add memory" 15.53 - name="add-memory-unit={template:this-element()}" /> 15.54 + <input type="submit" value="Add memory" name="..." template:selector-field="add-memory-unit,memory-unit" /> 15.55 </p> 15.56 </div> 15.57 </div> 15.58 @@ -73,18 +68,15 @@ 15.59 15.60 <div template:id="hard-disks-node" id="{template:this-element()}"> 15.61 <p template:element="hard-disk">Hard disk drive 15.62 - <select template:attribute="value" name="{template:this-attribute()}"> 15.63 - <option template:element="hard-disk-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.64 - value="{@value}"></option> 15.65 + <select template:multiple-choice-field="-,value" name="..."> 15.66 + <option template:multiple-choice-value="hard-disk-enum,value,selected" value="..."></option> 15.67 </select> 15.68 15.69 - <input type="submit" value="Remove" 15.70 - name="remove-hard-disk={template:this-element()}" /> 15.71 + <input type="submit" value="Remove" name="..." template:selector-field="remove-hard-disk" /> 15.72 </p> 15.73 15.74 <p> 15.75 - <input type="submit" value="Add hard disk" 15.76 - name="add-hard-disk={template:this-element()}" /> 15.77 + <input type="submit" value="Add hard disk" name="..." template:selector-field="add-hard-disk,hard-disk" /> 15.78 </p> 15.79 </div> 15.80 </div> 15.81 @@ -93,28 +85,24 @@ 15.82 <h2>Additional Storage</h2> 15.83 15.84 <p template:element="storage-unit">Storage unit 15.85 - <select template:attribute="value" name="{template:this-attribute()}" 15.86 + <select template:multiple-choice-field="-,value" name="..." 15.87 onchange="requestUpdate('accessories', '{template:other-attributes('value', ../storage-unit)}', '{template:other-elements(../../accessories)}', '{template:other-list-attributes('accessory-enum', 'value', ../../accessories)}', '/configuration/accessories')"> 15.88 15.89 - <option template:element="storage-unit-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.90 - value="{@value}"></option> 15.91 + <option template:multiple-choice-value="storage-unit-enum,value,selected" value="..."></option> 15.92 </select> 15.93 15.94 - <input type="submit" value="Remove" 15.95 - name="remove-storage-unit={template:this-element()}" /> 15.96 + <input type="submit" value="Remove" name="..." template:selector-field="remove-storage-unit" /> 15.97 </p> 15.98 15.99 <p> 15.100 - <input type="submit" value="Add storage" 15.101 - name="add-storage-unit={template:this-element()}" /></p> 15.102 + <input type="submit" value="Add storage" name="..." template:selector-field="add-storage-unit,storage-unit" /></p> 15.103 </div> 15.104 15.105 <div template:element="accessories" template:id="accessories-node" id="{template:this-element()}" class="accessories"> 15.106 <h2>Accessories</h2> 15.107 15.108 - <select name="{template:list-attribute('accessory-enum', 'value')}" multiple="multiple"> 15.109 - <option template:element="accessory-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.110 - value="{@value}"></option> 15.111 + <select name="..." template:multiple-choice-list-field="-,accessory-enum,value" multiple="multiple"> 15.112 + <option template:multiple-choice-list-value="accessory-enum,value,selected" value="..."></option> 15.113 </select> 15.114 </div> 15.115 </div> 15.116 @@ -123,25 +111,22 @@ 15.117 <h2>Input Devices</h2> 15.118 15.119 <p template:element="keyboard">Keyboard 15.120 - <select template:attribute="value" name="{template:this-attribute()}"> 15.121 - <option template:element="keyboard-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.122 - value="{@value}"></option> 15.123 + <select template:multiple-choice-field="-,value" name="..."> 15.124 + <option template:multiple-choice-value="keyboard-enum,value,selected" value="..."></option> 15.125 </select> 15.126 </p> 15.127 15.128 <p template:element="mouse">Mouse 15.129 - <select template:attribute="value" name="{template:this-attribute()}"> 15.130 - <option template:element="mouse-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.131 - value="{@value}"></option> 15.132 + <select template:multiple-choice-field="-,value" name="..."> 15.133 + <option template:multiple-choice-value="mouse-enum,value,selected" value="..."></option> 15.134 </select> 15.135 </p> 15.136 15.137 <h2>Display</h2> 15.138 15.139 <p template:element="screen">Screen 15.140 - <select template:attribute="value" name="{template:this-attribute()}"> 15.141 - <option template:element="screen-enum" template:expr="@value-is-set" template:expr-attr="selected" template:value="@value" 15.142 - value="{@value}"></option> 15.143 + <select template:multiple-choice-field="-,value" name="..."> 15.144 + <option template:multiple-choice-value="screen-enum,value,selected" value="..."></option> 15.145 </select> 15.146 </p> 15.147 </div> 15.148 @@ -150,7 +135,7 @@ 15.149 <h2>Price</h2> 15.150 15.151 <p>Total for this configuration: 15.152 - <span template:value="sum(/configuration//*[@value-is-set]/@price)"></span></p> 15.153 + <span template:value="sum(/configuration//*[@value-is-set]/@price) + sum(/configuration//*[@value = ../@value]/@price)"></span></p> 15.154 15.155 <p> 15.156 <input type="submit" value="Update!" name="update" />