This control embeds an XForm in the current one, optionally sharing data between the two, and optionally allowing communication via events.
Common Attributes: Control Common
Special attributes:
resource: Required URI of a resource containing an XForm to be embedded within the invoking XForm.
The resource
attribute is evaluated:
xforms-link-error
is dispatched to the control
element, and the element has no further effect; If the control
element has a binding:
shared
element with a binding that evaluates to a single
element, otherwise an xforms-binding-error
is dispatched to
the control
element.If the control
element does not have a binding:
shared
element, or
one without a binding, otherwise an xforms-binding-error
is
dispatched to the control
element.If the embedded XForm contains a shared
element, the embedded
XForm is initialised with additional effect from that element, and data is
shared between the two forms, as described in that section.
The shared
element also permits communication with events using
the signal
action.
If the embedded XForm contains no shared
element, there is no
communication between the two; the embedded XForm is freestanding and is
processed in the normal way.
<control resource="game.xhtml"/> <control resource="process.xf" ref="data"/> <control resource="{choice}" bind="values"> <toggle ev:event="finished" case="closed"/> </control>
Specifies the data to be shared by this XForm when embedded with a
control
element in another XForm, and allows communication with
events between the two.
Common Attributes: Common?
Special attributes:
initial local|external [not AVT] Optional attribute specifying how the shared data is to be initialized. The default is
local
.
If this XForm is not embedded in another, this element has no effect.
If it is embedded, this element specifies which data element if any is to be
shared and synchronised with the embedding XForm, and provides a communication
point for use with the signal
action.
If the shared
element has a binding:
control
element that caused the current XForm to be embedded
must also have a binding that similarly evaluates to a single element,
otherwise an xforms-binding-error
is dispatched to the
shared
element..shared
element has an initial
attribute
that evaluates to external
, the attributes and content of the
referenced element in the embedding XForm replaces those of the referenced
element in the embedded XForm,If the shared
element does not have a binding, the control
element used to embed the current XForm must not have a binding and no data is
shared.
<shared/>
No data is shared; communication is possible via events.
<shared ref="data"/> <shared bind="sharing"/> <shared ref="collection/a" initial="external"/> <shared> <action ev:event="restart"> <setvalue ref="score">0</setvalue> </action> </shared>
Common Attributes: Control Common
Special attributes:
name: Required string giving the name of an event to be dispatched.
control: Optional IDREF identifying a
control
elementdelay: Optional number giving the minimum number of milliseconds to delay dispatching the event. The default is no delay.
bubbles: Optional boolean indicating if this event bubbles — as defined in [DOM2 Events]. The default value is true for a custom event. For predefined events, this attribute has no effect.
cancelable: Optional boolean indicating if this event is cancelable — as defined in [DOM2 Events]. The default value is true for a custom event. For predefined events, this attribute has no effect.
Content:
property
*
Processing imitates that of the dispatch
action.
If the element has a control
attribute:
control
element, an xforms-action-error
event with an
error-type
of signal-control
is dispatched to the
signal
elementcontrol
has no shared
element, this action has no further effectshared
element of the XForm embedded by the identified control
element.If the element has no control
attribute:
control
element that caused this XForm to be embedded.<signal name="ready"/>
<signal if="count = 0" name="finished"/>
<signal control="game" name="restart"/>
<control resource="today.xhtml" label="Today's date:"/>
In today.xhtml:
<output value="now()"/>
<select1 ref="game" label="select a game to play"> <item label="minesweeper">minesweeper.xml</item> <item label="slider">slider.xml</item> <item label="noughts and crosses">xox.xml</item> </select1> <control resource="{game}"/>
<instance> <data xmlns=""> <before> <y>9</y><y>15</y><y>11</y><y>6</y><y>5</y><y>10</y><y>8</y> </before> <after> <y>8</y><y>3</y><y>12</y><y>14</y><y>9</y><y>16</y><y>14</y> </after> </data> </instance> ... <control resource="histogram.xhtml" ref="before" label="Before"/> <control resource="histogram.xhtml" ref="after" label="After"/>
In histogram.html:
<instance> <histogram xmlns=""> <data/> <height/> <width/> </histogram> </instance> <shared ref="data" initial="external"/> <repeat ref="data/*">...
<instance> <data xmlns=""> <testfile>test.xml</testfile> </data> </instance> <instance id="results"> <results xmlns=""/> </instance> ... <control ref="instance('results')" resource="{testfile}"> <action ev:event="started">...</action> <action ev:event="finished">...</action> </control>
In test.xml:
<instance> <data xmlns=""> <values>...</values> <results> <percent/> <success/> <failure/> </results> </data> </instance> <shared ref="results"/> <signal ev:event="xforms-ready" name="started"/> ... <trigger label="Done"> <signal ev:event="DOMActivate" name="finished"/> </trigger>
<instance id="values"> <data xmlns=""> <v>1</v> <v>2</v> <v>3</v> <sum/> </data> </instance> ... <control ref="instance('values')" resource="add.xhtml"/> <output ref="sum"/>
In add.xhtml:
<instance> <values xmlns=""/> </instance> <bind ref="sum" calculate="sum(../v)"/> <shared ref="/values" initial="external"/>
<instance> <locations xmlns=""> <home><x/><y/></home> <dest><x/><y/></dest> </locations> </instance> <control ref="home" resource="map.xf" label="Please locate your home location"/> <control ref="dest" resource="map.xf" label="Please locate your destination"/>
<instance> <data xmlns=""> <location/> </data> </instance> <shared ref="location"/> ... {code that uses location/x and location/y}
<instance> <testsuite xmlns=""> <testcase> <filename>boolean-from-string.xml</filename> <tests> <test res="" req="true">1</test> <test res="" req="false">0</test> <result/> </tests> </testcase> <testcase> ... </testcase> </testsuite> </instance> <repeat ref="testcase"> <control resource="{filename}" ref="tests"/> </repeat>
In the embedded XForm:
<model> <instance> <tests xmlns=""/> </instance> <bind ref="test" calculate="..." /> <bind ref="result" calculate="..."/> <shared ref="tests" initial="external"/> </model>