16.2 Flexible Prompting in a Driver Configuration File

variable-decl blocks can be marked to allow them to be prompted for separately, based on user input.

DTD changes:
-----------
* <!ENTITY % CompareMode "equals | not-equals">

  <!--******************************************************** -->
  <!--The variable-decl element contains definitions of variables   -->
  <!-- whose values can be prompted for and referred to throughout  -->
  <!-- the pre-configured driver file.                              -->
  <!-- *********************************************************** -->
  <!ELEMENT variable-decl(
    node-var*,
    text-var*)>
*  <!ATTLIST variable-decl
*    <!-- The following are used in the support of flexible -->
*    <!-- prompting.                                        -->
*    use-when-var  CDATA #IMPLIED
*    use-when-value  CDATA #IMPLIED
*    use-when-mode  (%CompareMode) "equals"
  >

* Added for flexible prompting.

Semantics

  1. All variable-decl blocks with no use-when-var attribute are added to the prompt set.

  2. All variable-decl blocks with a use-when-var attribute where the variable is defined and the variable value meets the condition are added to the prompt set.

    Variable analysis includes built-ins and variables carried forward from any previous import.

  3. The user is prompted.

  4. The prompt set is emptied and Steps 2 and 3 are repeated until there are no more prompts to process or all variable-decl blocks have been processed.

  5. The import proceeds as before.

    NOTE:The comparisons for use-when-var variables are case insensitive.

Example 1

     <variable-decl use-when-var="varCheck" use-when-value="Fu" use-when-mode="equals">
    <text-var prompt="When Fu?" var-name="fuVar"/>
  </variable-decl>

  <variable-decl use-when-var="varCheck" use-when-value="Fu" use-when-mode="not-equals">
    <text-var prompt="When not Fu?" var-name="fuVar"/>
  </variable-decl>

  <variable-decl>
    <text-var prompt="Which other <variable-decl>?" var-name="varCheck">
      <dropdown>
        <value>Fu</value>
        <value>Bar</value>
      </dropdown>
    </text-var>
  </variable-decl>

In this example, the user would be prompted with a drop-down list. The description of the drop-down list is “Which other <variable-decl>?” The options in the list are Fu and Bar.

If the user select Fu from the drop-down and clicks Next, he or she is prompted again with a box. The description of the box is “When Fu?”

If the user selects anything else from the drop-down list and clicks Next, he or she is prompted with another box. The description of the box is “When not Fu?”

Example 2

<variable-decl use-when-var="varCheck" use-when-value="Fu">
    <text-var prompt="When Fu?" var-name="fuBarVar"/>
  </variable-decl>

  <variable-decl use-when-var="varCheck" use-when-value="Bar">
    <text-var prompt="When when Bar?" var-name="fuBarVar"/>
  </variable-decl>

  <variable-decl>
    <text-var prompt="Which other <variable-decl>?" var-name="varCheck"/>
  </variable-decl>

In this example, the user is presented with a box. The description of the box is “Which other <variable-decl>?” If the user specifies “Fu” in the box and clicks Next, he or she is presented with another box. The description on the second box is “When Fu?”

If the user specifies “Bar” in the box and clicks Next, he or she is presented with a box. The description is “When Bar?” If he or she specifies anything else, there are no further prompts and the variable fuBarVar is not defined.