Form Content
Context of the file format change
A
usual feature in office productivity applications is to link form
controls, which are part of e.g. a spreadsheet document, to certain
table cells in this document, to couple the content of the cell with
the content of the form control.
In
the scope of this change proposal, we suggest a way how this feature
could be reflected in the Open Document File Format.
Linked Cell
All
input-type controls (i.e. controls where the user can enter data, as
opposed to controls which can merely be used to the display data) are
extended with an attribute describing with which table cell they
should be coupled.
<define
name="form-text-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-textarea-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-password-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-file-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-formatted-text-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-numeric-control-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-date-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-time-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-combobox-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-listbox-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-checkbox-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-radio-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
<define
name="form-value-range-attlist" combine="interleave">
<ref
name="common-linked-cell"/>
</define>
The
form:linked-cell attribute
specifies a table cell which the form control content should be
linked to. Linking means that at every point in time, the cell value
and the control value are equal (less possible type
incompatibilities).
The
table cell to link the control to can be specified as cellAddress,
or as plain string denoting a named cell range. If, in the latter
case, the named range contains more than one cell, the cell in the
first row and first column of the range is linked to the form
control.
<define
name="common-linked-cell" combine="choice">
<optional>
<attribute
name="form:linked-cell">
<choice>
<ref
name="cellAddress"/>
<ref
name="string"/>
</choice>
</attribute>
</optional>
</define>
List Linkage Type
The
form:list-linkage-type
attribute is used to specify in which way list boxes should exchange
their current value with a linked table cell.
<define
name="form-listbox-attlist" combine="interleave">
<ref
name="list-linkage-type"/>
</define>
The
value of this attribute can be one of the following:
selection:
The list box should exchange the text of the selected item with the
linked cell. That is, if an item in the list box is selected, the
text of this item is propagated to the linked cell. Also, if a text
is entered into the linked cell, the list box should select the item
whose text equals the cell text, or deselect all items if no such
item exists.
selection-indexes:
The list box should exchange the 1-based index of the selected item
with the linked cell. That is, if an item in the list box is
selected, the index of this item within the list is propagated to
the linked cell. Also, if the value in the linked cell changes, the
list box should select the item with the index described by the cell
value, or deselect all items if the cell value cannot be interpreted
as integer value, or does not specify a valid list index.
<define
name="list-linkage-type" combine="interleave">
<optional>
<attribute
name="form:list-linkage-type">
<choice>
<value>selection</value>
<value>selection-indexes</value>
</choice
>
</attribute>
</optional>
</define>
Source Cell Range
<form:listbox>
and <form:combobx>
elements are extended with an attribute which specifies which cell
range should be used to fill their item list.
<define
name="form-combobox-attlist" combine="interleave">
<ref
name="common-source-cell-range"/>
</define>
<define
name="form-listbox-attlist" combine="interleave">
<ref
name="common-source-cell-range"/>
</define>
The
form:source-cell-range
attribute specifies a rectangular cell range, whose content should be
synchronized with the form controls item list. The form control is
expected to react on changes in the cell range, that is, it should
actively adjust its item list if the cell range's content changes.
The
source cell range can be specified as cellRangeAddress,
or as plain string denoting the name of a named cell range (see
chapter ). In the latter case, if the range contains more columns
than the form control can handle, the left-most columns of the cell
range are to be used.
<define
name="common-source-cell-range" combine="choice">
<optional>
<attribute
name="form:source-cell-range">
<choice>
<ref
name="cellRangeAddress"/>
<ref
name="string"/>
</choice>
</attribute>
</optional>
</define>