XRX/Selection List Generator

Motivation
You want to store all your code tables in a central location and have each form dynamically generate selection lists from these code tables.

Method
We will create a very simple XML file format to store all our codes. We will store one code table per file and then write a simple XQuery that goes through all these files to build a sample selection list. This selection list will create an instance in the model to hold each selection list value. It will also populate the instance with the first value in the list.

In our sample, we will assume an XRX file naming standard such as /db/apps/app-name/code-tables/my-code-table.xml where each application contains its own code tables for maximum application portability between systems. Applications that share code tables can store these in a location such as /db/shared/code-tables/my-code-table.xml

Sample XQuery
This query goes through all the files in the XRX application code-tables collection and looks for XML files that have code-table as the root element. It then creates a report that contains all the selection lists inside a working XForms application.

  {style:header} {style:breadcrumb} Sample with a Model in the XForm {for $code-table in $code-tables let $code-table-name := $code-table/*:code-table-name/text return  {$code-table-name}:  {for $item in $code-table/*:items/*:item return  {$item/*:label/text} {$item/*:value/text} } {$code-table/*:definition/text}  }     {style:footer}

Note that this XQuery uses element constructors to create element names in the instance. It also uses the *:name notation to put data from the null namespace directly into the XForms namespace.

This file also puts the definition of the element directly into the hits of the XForms application. Under some XForms applications such as Firefox the hint appears in a floating ephemeral mode display in the left margin of the form.

Sample CSS File
Here is the block-form.css file that can be used to make each selection appear on a separate line:

Back: File Locking • Next: Glossary Term Editor