XSLTools

Changeset

266:7fbddded81b8
2005-10-03 paulb raw files shortlog changelog graph [project @ 2005-10-03 19:12:41 by paulb] Converted the template to use "macro" attributes. Switched to using input/initialiser stylesheets, restricting additional transformations to those filtering the choices in the output. Split up the old "database" document into separate enumeration-related documents. Renamed the example document (from config_input.xml to config_example.xml). Introduced the config_filter.xsl stylesheet to perform the filtering.
examples/Common/Configurator/Resources/config_accessories.xml (file) examples/Common/Configurator/Resources/config_base_system.xml (file) examples/Common/Configurator/Resources/config_cpu.xml (file) examples/Common/Configurator/Resources/config_database.xml examples/Common/Configurator/Resources/config_database.xsl examples/Common/Configurator/Resources/config_example.xml (file) examples/Common/Configurator/Resources/config_filter.xsl (file) examples/Common/Configurator/Resources/config_hard_disk.xml (file) examples/Common/Configurator/Resources/config_input.xml examples/Common/Configurator/Resources/config_keyboard.xml (file) examples/Common/Configurator/Resources/config_memory_unit.xml (file) examples/Common/Configurator/Resources/config_mouse.xml (file) examples/Common/Configurator/Resources/config_screen.xml (file) examples/Common/Configurator/Resources/config_storage_unit.xml (file) examples/Common/Configurator/Resources/config_template.xhtml (file)
     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" />