Preguntas de tabla de códigos

Si un atributo está definido en un esquema de DS como una tabla de códigos, cuando se visualiza la pregunta correspondiente, el comportamiento predeterminado es mostrar la pregunta como un menú desplegable. Sólo se puede seleccionar una respuesta en la lista desplegable.

Por ejemplo, si esto es un requisito para capturar el estado inicial de un miembro de la unidad familiar, se puede añadir una nueva definición de dominio para representar la tabla de código AddressState y se puede añadir un atributo para almacenar el estado inicial a la entidad de Persona de la siguiente manera:

Figura 1. Tabla de códigos y atributo de estado
...
<xsd:simpleType name="IEG_STATE_ADDRESS">
  <xsd:annotation>
    <xsd:appinfo>
      <D:options>
        <D:option name="code-table-name">AddressState</D:option>
      </D:options>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:restriction base="IEG_CODETABLE_CODE" />
</xsd:simpleType>
...

<xsd:element name="Person">
...
  <xsd:attribute name="homeState" type="IEG_STATE_ADDRESS" />

Se puede añadir al script una pregunta para capturar la información de estado inicial de la manera siguiente:

Figura 2. Pregunta de tabla de códigos de estado
<question-page id="AboutYouPage" entity="Person">
...

  <cluster>
    <question id="homeState">
      <label id="State.Label">
        <![CDATA[Seleccione el estado inicial:]]>
      </label>
    </question>
  </cluster>

Cuando el script se ejecuta, se visualiza la pregunta al usuario como una lista desplegable.

IEG también soporta la definición de preguntas de tabla de códigos de tal manera que el usuario pueda realizar selecciones múltiples.

Cuando una pregunta de tabla de códigos es de una sola selección, la respuesta a la pregunta se puede almacenar en un solo atributo de una entidad. Puesto que existen múltiples respuestas posibles en una pregunta de tabla de códigos de selecciones múltiples, se debe añadir una secuencia para almacenar todas las respuestas y se debe definir un nuevo tipo de entidad para representar las respuestas en la secuencia.

Figura 3. Entidad de estado
<xsd:element name="Person">

  <xsd:complexType>
    <xsd:sequence minOccurs="0">
      <xsd:element ref="State" minOccurs="0"
          maxOccurs="unbounded" />
      </xsd:sequence>
...
  </xsd:complexType>
</xsd:element>

<xsd:element name="State">
  <xsd:complexType>
    <xsd:attribute name="stateCode" type="IEG_STATE_ADDRESS" />
  </xsd:complexType>
</xsd:element>

Una pregunta de tabla de códigos se convierte en una selección múltiple estableciendo el atributo multi-select de la pregunta en true. Cuando se añade una pregunta de tabla de códigos de selección múltiple, el clúster al que se está añadiendo la pregunta se debe correlacionar con el nuevo tipo de entidad que representa las respuestas a la pregunta. En nuestro ejemplo, el clúster se debe correlacionar con la entidad State. La página que contiene la pregunta de selección múltiple se debe correlacionar con la entidad que contiene la secuencia. En este ejemplo, la página se debe correlacionar con la entidad de persona. Por último, para que sean visibles varias opciones en una pregunta de tabla de códigos de selección múltiple, se debe añadir un diseño a la pregunta. El diseño debe especificar el número de filas visibles para la pregunta. Si el número de opciones disponibles para la pregunta excede el número de filas especificadas en el diseño, se añadirá una barra de desplazamiento a la pregunta.

Figura 4. Pregunta de tabla de códigos de selección múltiple
<question-page id="AboutYouPage" entity="Person">
...

  <cluster entity="State">
    <question id="stateCode" multi-select="true">
      <label id="State.Label">
        <![CDATA[Seleccione los estados en que ha vivido:]]>
      </label>
      <layout>
        <num-rows>4</num-rows>
      </layout>
    </question>
  </cluster>

Cuando se ejecuta el script, la pregunta se visualiza al usuario como una lista de descripciones de tabla de códigos con un recuadro de selección para cada elemento.