I take it I need something like Enketo for that? ODK Aggregate is pretty much your submissions database repository. You can launch Enketo from Aggregate directly to fill in a particular form, or 'render it' eg if you just want to preview a newly written form.
Hopefully you'll find something that fills your need; if not, yer always welcome to propose a new feature! However, if the XHTML document in question is in a file on the local machine, then you can get the instance from the file, and write it back with a submit.
See below. XForms allows you to have different submit controls binding to different submission elements in the head to submit the data to different servers, or in different ways. For instance, the search example could allow the user to submit the search string to different search engines:. Note how which submission to use is identified with the 'id' attribute. The first submission element in the model is the default one, so it's also possible to write:. Just as with HTML there are a number of ways to submit the data.
In HTML how to submit is expressed in two attributes, method and enctype ; in Xforms it is expressed in method only:.
An interesting use of this is something like:. Since, as shown above, you can have more than one submission per form, this means that for a large form, you could have separate 'save to disk' and 'submit' buttons.
The default when values have been submitted is for the result returned by the server to replace the whole document, just as with HTML. However, there are other options, specified with the attribute replace on the submission element. For instance, for an address-change form for a bank, you can provide two buttons, one to prefill the form with name and address based on the account number, and one to submit the changed results:.
The 'find' button will replace the instance with a new instance containing the details of the person with the account number, which you can then change; the 'submit' button will then send the changed instance back, leaving the form as-is in the browser to allow further changes or to input a new account number to prefill.
It will look like this this is a mock-up, where the changed value is not submitted, but it gives you the idea :. In HTML you can specify that controls are disabled , or read-only but the only way you can change the property is with scripting. XForms offers easy ways to control these properties, but has other properties you can specify as well:. Note that in XForms it is the collected value that has the property, not the control, but the property shows up on all controls bound to the value.
To disable controls you use the relevant property. For instance, to say that the credit card number only needs to be filled in if the person is paying by credit, you can write:. This states that the fields cc and expires are only relevant when method has the value credit , and will therefore be disabled for other values of method. You have to say ".. It is as if you have done a 'change directory' to that element. If you said just " method ", it would refer to a child element of cc or expires.
The controls could be written like this but note that there is no indication that they may get disabled: that is inherited from the value they refer to :.
A browser is free to decide how disabled controls are presented and it may also allow you to specify in a stylesheet how they should look , but typically they will be grayed out in the normal way, or hidden entirely.
The stylesheet rule could look like:. Similarly to relevant , you can specify a condition under which a value is read-only. For instance:. This example says that the default value of color is black , and can't be changed if variant has the value basic. This example will be changed below so that the value of color is also reset to black if the variant is reset to basic.
See the calculate property shortly. A useful new feature in XForms is the ability to state that a value must be supplied before the form is submitted. The simplest case is just to say that a value is always required. For instance, with the search example:. It is up to the browser to decide how to tell you that a value is required, but it may also allow you to define it in a stylesheet, such as:. Note the XPath use of ". A control, apart from the label can also contain an alert that explains what the restrictions are on a value being collected:.
It is possible to indicate that a value in the instance is calculated from other values. There are a number of functions available, including arithmetic, string manipulation, date handling, and conditionals using 'if'. The read-only example above can be adapted to use a constraint to ensure the default value of color applies for basic models:. XForms documents may use additional functions beyond those defined in the document and by the expression language.
The names of any extension functions used in a document should be declared in the functions attribute on the model element. When the document is loaded the processor must check that those functions are available. If any are not, an xforms-compute-error must be dispatched to the model element. If that event is not canceled, processing halts this is the default action for xforms-compute-error.
If the event is canceled, processing continues. If an expression uses an extension function for which the processor does not have an implementation, on evaluation an appropriate event xforms-expression-error , xforms-binding-error , or xforms-action-error must be dispatched to the containing element. The var element declares a local variable. A variable is a mapping between a name and a value. Common Attributes: Common , value.
A value is obtained by evaluating the value attribute if present, and otherwise from the inline text. The result is made available as a variable to expressions for which the variable is in scope. A variable can occur either as a child of an action element or anywhere a control can appear. Variables under the model element are not supported except within nested action elements. Behavior for such variables may be specified in the future based on implementation experience.
If a variable is a child of an action element, its value is updated after the previous child action or variable has been invoked or evaluated, and before the following child action or variable is invoked or evaluated. Such a variable is evaluated exactly once for each execution of the content of the action element.
This means that if the action is repeated with the iterate or while attribute, the variable is re-evaluated as well during each execution. Variables outside of actions behave as if they are updated by refresh in the order they are defined. A variable holds references to all the nodes the value expression returns if any. Deleting nodes from an instance with a delete action does not remove those nodes from the value of the variable until the variable is re-evaluated.
Similarly, changes to predicates of the value expression by actions don't update the value of the variable. For any variable, there is a region more specifically, a set of element nodes of the form within which the variable is visible.
The set of variables in scope for an expression consists of those variables that are visible at the point in the form where the expression occurs. Variable scoping is lexical : a variable defined by a var element is visible for all following sibling nodes and their descendants. The variable is not visible for the var element itself. Variable shadowing is not allowed: if a variable is declared with a name that is already in scope at the point of the new variable declaration, an xforms-binding-error is dispatched to the var element.
Defines a function that can be called from any expression within the document that is associated with the model in which the function is defined. Note: The Working Group is considering allowing the definition of custom functions outside of the model in a future version of the specification, but is waiting for implementation experience first. A custom function is included in the in-scope functions of the static context for all expressions associated with the model that contains the function definition, unless.
The value of the signature attribute defines the name, parameters and return type of the function. See Function signature syntax for more information about the function signature. The function that is executed as the result of a function call is identified by searching the in-scope functions of the static context for a function whose name and arity match those of the function call.
Note: Functions are not polymorphic. Although the function call mechanism allows two functions to have the same name and different arity, it does not allow them to be distinguished by the types of their arguments. If the result type of the function is specified with the as attribute, the result value of the function as specified by the function body is converted to the required type specified using a SequenceType, as defined in XPath 2.
It is a type error if this conversion fails. If the as attribute is omitted, the calculated result is used as supplied, and no conversion takes place. The second definition of the my:summation function doesn't override the first definition because the override attribute is set to no even though the expanded QName and the arity of the functions are the same.
The signature attribute of the function element has the following syntax:. This means that a form author cannot add functions to the default function namespace. The parameter list defines the formal arguments to the function. When the function is called using a function call in an expression, the first argument supplied is assigned to the first parameter, the second argument supplied is assigned to the second parameter, and so on.
The type declaration defines the required type of the parameter. The rules for converting the values of the actual arguments supplied in the function call to the types required by each parameter are defined in [XPath 2. The rules that apply are those for the case where XPath 1. If the value of a parameter to a custom function cannot be converted to the required type, a type error is signaled. The function body contains the implementation of the function as text content, following the syntax of the function's implementation language.
Alternatively, when the function's implementation language is the same as the expression language of the form, the function body can be specified with an optional sequence of var elements followed by a single result element specifying the function's result.
Note: This in particular allows writing more readable custom functions with XPath 1. The implementation of the function should be stable calling the same function twice within an execution scope with the same arguments returns the same result and should not change any instance data, nor should it change the internal state of the form e. Within the body of a custom function, the evaluation focus is initially undefined; this means that any attempt to reference the context item, context position, or context size is a non-recoverable dynamic error [err:XPDY] as defined in XPath 2.
The variables in scope for the function body include all variables representing the function parameters, as well as all variables that are in scope where the custom function is defined.
Note: Function parameter names can shadow variables that would otherwise be in scope for the function body. Expressions within the function body may refer to instance data by using the instance function. Any static or dynamic error occurring while evaluating the value of a var element within the body element propagates to the expression calling the function.
The optional result element is used inside a function element to produce the result of the function. If any var element is present under the function element, this element is required. Otherwise, it is optional. A value is obtained by evaluating the value attribute if present, and otherwise from the inline text; this is used as the result of the function.
Any static or dynamic error occurring while evaluating the value attribute propagates to the expression calling the function. This section defines the standard datatypes available. They are in-scope without the inclusion of an XML Schema.
All XML Schema 1. The concepts of value space , lexical space and constraining facets are as specified in [ XML Schema part 2 ]. The following types are defined in the XForms namespace. They can be used without a namespace prefix when the XForms namespace is the default. For ease of authoring, the following XForms types are defined as having a lexical space identical to the corresponding XML Schema datatype.
Type duration does not support a total ordering. Using dayTimeDuration or yearMonthDuration is preferable. The type is defined as the following lexical space the pattern has been split over lines for slightly improved readability, but should be a single line :. This type represents an internationalised absolute http: or https: web address, a further subset of absoluteIRI. The type is defined as the following lexical space the pattern has been split over lines for readability, but should be a single line , which is the same as that defined for absoluteIRI , with the scheme restricted to http and https.
This type represents an email address, as defined by the production Mailbox in [ RFC ]. Two uncommon features of the syntax are excluded, namely address literals, such as person [ The type is defined as the following lexical space the pattern has been split over lines for readability, but should be a single line :.
Whilst the string mailto:editors example. A valid email address does not include a mailto: URI scheme. This type represents an 'international' email address, as defined in [ RFC ]. This is in essence the same syntax as above, but with more characters permitted where letters are permitted. This type represents a telephone number, based on [ ITU E. Digits may be separated by spaces and hyphens. This type represents identity, debit and credit card numbers; it is a pattern restriction on xs:string to one or more digits 0 - 9.
To properly check a credit card number, you must not only check that it is a string of digits, but also that it is a valid card number.
The function is-card-number does this, as in this example:. This type is for a value intended to be interpreted as a serialized HTML fragment. The lexical space is a string with no extra restrictions:.
This datatype serves as a base for the listItems datatype. The lexical space for listItem permits one or more characters valid for xs:string, except white space characters.
Controls that produce simpleType list content use a derived-by-list datatype. The lexical space for listItems is defined by list-derivation from listItem , that is to say, it consists of zero or more values of type listItem, separated by whitespace. In most cases, it is better to use markup to distinguish items in a list. See The itemset Element. When multiple datatype restrictions apply to a node, the combination of all given restrictions apply.
Note that it is possible to produce a combination of restrictions that is impossible to satisfy. If no type constraint is provided, an instance data node defaults to type xs:string. If a type name is used that does not identify an in-scope type, an xforms-binding-error is dispatched to the relevant bind or instance element. A container control combines other controls into full user interfaces.
Each control has its own syntax and functionality; however, all share some features, which are described in this section. A host language may add markup to the UI Content set. These are used to attach information to many controls and other elements; the information may be specified either as a child element, or as an attribute of the same name see the UI Common attribute set.
If both an attribute and an element of the same name are present, the attribute is used. If specified as an attribute, the content of the attribute is the information to be used; if as a child element, the information is obtained by evaluating the value attribute if present, otherwise from the Single Item Binding if present, and otherwise from the inline text.
The information is rendered in the same way as by the output element , and then displayed as described below; as a consequence they may also generate an xforms-output-error. Common , Appearance , Single Item Binding optional , value , mediatype. Processors should choose an appropriate presentation, and should allow styling if the host language integration supports it. By default a graphical browser should present help as an ephemeral message. Processors should choose an appropriate presentation for the hint, and should allow styling if the host-language integration supports it.
By default, a presentation should be the same as an ephemeral message associated with the label. When a control's associated data is invalid, the alert text is made available to the user. Processors should choose an appropriate presentation for the alert. This might be displayed with a symbol showing that the value is invalid, that if you hover over, displays the alert text:. When a control becomes disabled, the xforms-disabled event must be dispatched to it, and the control and any children must be made unavailable, removed from the navigation order, and not allowed focus.
Disabled content should not be presented, or should be styled differently. When a control becomes enabled, the control must be updated to represent the current value s and model item properties of its bound instance data, and made available for user interaction.
The xforms-enabled event must be dispatched to the control, as well as the following events as appropriate: xforms-value-changed , one of xforms-valid or xforms-invalid , one of xforms-readonly or xforms-readwrite , one of xforms-required or xforms-optional , and one of xforms-in-range or xforms-out-of-range.
Control Common , inputmode xs:string , incremental xs:boolean. Control Common , value Expression , mediatype xs:string. Control Common , accept xs:string , mediatype xs:string [deprecated], incremental xs:boolean.
Control Common , start xs:string , end xs:string , step xs:string , incremental xs:boolean. Control Common , selection "open" "closed" , incremental xs:boolean. Common , Single Item Binding. Common , Single Item Binding , value string Expression. Common , Single Item Binding optional , value Expression. Common Attributes: Control Common , inputmode , incremental. Data Binding Restrictions: Binds to any simpleContent except xs:base64Binary , xs:hexBinary or any datatype derived from these or an atomic value.
An input element produces some suitable rendering of the instance data it is bound to. When the element has the input focus, interaction can change that rendering; changes to the rendering cause consequent changes to the instance data it is bound to. This control must allow entry of a lexical value for the bound datatype. Implementations should provide a convenient means for entry of value according to their datatype and take into account localization and internationalization issues such as representation of numbers and dates.
For example, an input bound to an instance data node of type date might provide a calendar control to enter dates; similarly, an input control bound to type boolean might be rendered as a checkbox. This example shows input and submit controls working together to provide the common user experience of a simple search. The input collects the search term s and then automatically initiates the submission identified by doSearch if the user activates the input control.
Alternatively, the user initiate the doSearch submission by activating the submit control. A graphical browser on a desktop device might activate controls such as input in response to a special user action such as pressing the Enter key or either clicking or double-clicking with the mouse depending on the type of control.
This control allows input of data in a manner that hinders third parties discerning the data being input. A common use is for password entry. Implementation Requirements: Implementations, including accessibility aids, must obscure the value being entered into this control.
Except for the rendering aspects, the secret control behaves further as an input control. This control enables free-form data entry and is intended for use in entering multiline content, such as the body of an email message. Implementation Requirements: Must allow entry of a lexical value for the bound datatype, including multiple lines of text.
Implementations should provide a convenient means for entry of datatypes, for example, a textarea bound to an instance data node of type xforms:HTMLFragment might provide a WYSIWYG rich text editor with common word processor features. Note that the constraints on how much text can be input are obtained from the underlying XForms Model definition and not from any display properties.
Common Attributes: Control Common , value , mediatype. The data to be rendered is obtained by evaluating the value attribute if present, or otherwise from the Single Item Binding if present, and otherwise from the inline data. The mediatype is obtained from the mediatype attribute if present, or otherwise from the mediatype child element if any.
If a mediatype has been specified, and the data to be output is non-empty, the data is decoded or dereferenced depending on the base type of the data: an xs:base64Binary value is base decoded, an xs:hexBinary value is hex-binary decoded, and an xs:anyURI value is treated as a URI and dereferenced.
For any other type, the data is used without modification. The data is rendered in a suitable way taking into account the datatype of the value, the mediatype if any, the appearance attribute, and localization and internationalization issues such as representation of numbers and dates. The data is rendered on XForms initialization, and re-rendered whenever there is a change in any node to which the binding or expression refers, or if the mediatype changes.
Failure to render the content should result in a non-fatal xforms-output-error. Failure can occur for many reasons, such as:. The content model for the output element includes UI Common in order to allow action handlers for the xforms-output-error as well as to allow more comprehensive behavior and information to be provided for the output , e. Given the model above, the following controls can upload an image to instance data and display it:.
A graphical browser taking into account the appearance and the localization information from the host language, might present the above output controls as follows:. Element mediatype deprecated in favor of using an AVT in the mediatype attribute on element output specifies the required mediatype to be used for output. The mediatype to be used is obtained by evaluating the value attribute, or otherwise from the inline content of the element.
This control allows files to be uploaded from the local file system, as well as accepting input from devices such as microphones, pens, scanners, and digital cameras. Common Attributes: Control Common , incremental. Content: filename? Data Binding Restrictions: This control can only be bound to datatypes xs:anyURI , xs:base64Binary or xs:hexBinary , or types derived by restriction from them. When activated, this control offers the user a dialog to upload a file, or obtain data from another source, such as a camera, scanner, microphone, etc.
Implementations with a file system should support file upload — selecting a specific file. Implementations attached to devices capable of producing data should support those devices. Implementations which cannot support upload for the given mediatype must make this apparent to the user. If child element filename is present and a filename is available, the filename of the data to upload is placed in the instance at the node indicated by the binding attributes on child element filename.
If child element mediatype is present and a mediatype is available, the mediatype of the data to upload is placed in the instance at the node indicated by the binding attributes on child element mediatype. When bound to an instance data node of type xs:base64binary , xs:hexBinary , or a type derived by restriction thereof, the binary content is placed in the content of the node, encoded as indicated. This element specifies the location for the filename of the chosen binary resource, if available.
For security reasons, upload must not take action due to any existing value of the node. Data Binding Restrictions: Binds to any simpleContent except xs:base64Binary, xs:hexBinary or any datatype derived from these. The user is prompted to select an image. The corresponding filename, perhaps " me.
This element specifies the location to place the mediatype of the chosen binary resource, if available. Data Binding Restrictions: Binds to simpleContent from the following list of datatypes, or datatypes derived by restriction from them: xs:duration , xs:date , xs:time , xs:dateTime , xs:gYearMonth , xs:gYear , xs:gMonthDay , xs:gDay , xs:gMonth , xs:float , xs:double , and xs:decimal. Note: These datatypes include by derivation all of the integer datatypes which are derived by restriction from xs:decimal , and all of the XForms datatypes defined in Section XForms Datatypes that correspond to the allowed XML Schema datatypes.
This control allows the input of a value within the restrictions specified by the control. In the event of overlapping restrictions between the underlying datatype and the start and end hints, the most restrictive range should be used.
The upper and lower bounds and the step size should be available to the user. If the instance data value is outside the upper or lower bounds, the control is out-of-range.
The attributes of this element encapsulate sufficient metadata that in conjunction with the type information available from the XForms Model proves sufficient to produce meaningful prompts when using modalities such as speech, e.
Thus, in the example below, an aural user agent might speak a prompt of the form Please pick a date in the range January 1, through December 31, This control allows user-initiated actions and can be used to construct custom controls.
It is similar in effect to the HTML button element. Data Binding Restrictions: Binds to any node or an atomic value; the data is not used, only the data's model item properties:. This control is activated by user interaction, which causes the DOMActivate event to be dispatched to it; event handlers in the body of the trigger can respond to this event to effect further processing. Graphical implementations might render this control as a push-button with the label on the button face.
Style sheets can be used to style this control in other ways, though a means is provided to suggest an appearance through the appearance attribute. Suggested renditions for the pre-defined values of this attribute are as follows:. This control initiates a submission; it is shorthand for a trigger with a send action. Data Binding Restrictions: Binds to any node or an atomic value. This control does not use the instance data it is bound to, but is affected by the data's model item properties: the relevant property affects if the control can be activated or not; all other properties have no effect.
A submission element is identified from the submission attribute or its default: if no such element is identified then an xforms-action-error with an error-type of send-submission is dispatched; otherwise an xforms-submit is dispatched to the element.
This control then becomes unavailable for further activation until the submit process concludes with either an xforms-submit-done or xforms-submit-error. Typically, style sheets are used to specify the appearance of controls, however a means is provided to suggest an appearance through attribute appearance. Suggested renditions for the pre-defined values of this attribute are the same as for trigger.
The collection of values to be selected from are provided by a combination of item elements, each of which supplies one value, and itemset elements, which provide a sequence of values. A selection control can be "simple" or "complex" :. A simple selection can be either "open" or "closed", as indicated by the selection attribute: an open selection allows the selection of values outside the list given.
A complex selection is always closed. The items from the children of the selection control are evaluated, each being a pair of a label and a value.
The label for each pair must be made available to the user, with an indication of whether the item is selected or not.
Interaction with a label toggles the selected state. On selection, items receive the xforms-select event; on deselection, the xforms-deselect event.
A selection control is out-of-range if it is bound to data whose value for any reason is not in the collection of possible values. Typically, a style sheet is used to control the appearance of controls, though a means is provided to suggest an appearance through the appearance attribute. The value of the attribute consists of one of the following values:. Data Binding Restrictions: For simple selections, binding must be to any simpleContent capable of holding a sequence or a sequence of atomic values; the datatype may be a non-enumerated value space, e.
For complex selections, binding is to an element with no mixed content, or a sequence of atomic values. All items whose values match a value in the bound instance data are initially selected; if a particular value in the bound data matches more than one item, at least one is selected, but it is not further defined which, nor how many. If there is no match, no items are initially selected.
Items with an empty storage data subtree or a storage value that is either empty or contains only white space characters are never selected. For open selections, the control must also allow free data entry, as described in The input Element. The control must permit multiple values to be entered through free entry.
The label of such an entered value is considered identical to the value itself. The content of the bound instance node must only be changed by the addition or deletion of storage data associated with items that have been selected or deselected; content not associated with selection items must be preserved.
For a simple selection, the net effect of newly selected and deselected items is computed into a string, preserving content not associated with selection items.
For complex selections, the individual subtrees associated with the newly selected and deselected items are added or removed individually by using insert and delete ; after which an update is done, followed by a refresh.
Note that when the list of values is stored as a space separated list, the values to be selected may not themselves contain spaces. For instance, this is incorrect use:. Since a select is essentially a shorthand for inserts and deletes, which can also insert and delete attributes, a selection control can also be used for adding attributes to elements:.
This control is similar to the select control except that only a single item may be selected from the list of choices: interaction with a label of a non-selected item first deselects any item already selected, and then selects the new item. Data Binding Restrictions: For simple selections, binds to any simpleContent or an atomic value; for complex selections, binds to an element with no mixed content or an atomic value. Any item whose value matches the value of the bound instance data is initially selected; if more than one matches, at least one is selected, but it is not further defined which, nor how many of the matching items is selected.
If there is no match, no item is initially selected. For both closed and open selections, any item with an empty storage data subtree or a storage value that is either empty or contains only white space characters is treated identically to any other value. Interaction with the label of an unselected item deselects any already-selected item and then selects the new item; interaction with the label of a selected item deselects that item. For open selections, the control must also allow free data entry, as described in The input Element ; entering a value selects that value after deselecting any already-selected value.
The selected value is stored in the bound instance location, for complex selections as a copy of the subtree of the selected value. This select1 combines item and itemset elements to form the collection of items:. This element is used within selection controls to group available choices. This provides the same functionality as element optgroup in HTML. This element specifies the storage value and label to represent an item in a selection list.
It is found within elements select1 and select , or grouped in element choices. Data Binding Restriction: All lexical values must be valid according to the datatype bound to the selection control.
If the Single Item Binding attributes are used and indicate a node in a model other than the bound node of the containing selection control, then an xforms-binding-error must occur.
The storage value is obtained by evaluating the value if present, otherwise from the Single Item Binding if present, otherwise by evaluating the value child element, if present, and otherwise from the string content of the item element. The storage value is obtained by evaluating the value attribute if present, otherwise from the Single Item Binding if present, and otherwise from the inline content of the value element. This element generates item elements from instance values, for select and select1 controls.
If there is a copy attribute or child present, this itemset is part of a complex selection : if the bound target of the containing select or select1 element is not an element node, an xforms-binding-error event is dispatched to the containing selection element. The sequence binding is evaluated to give a sequence. For each item of this sequence, an associated item element is generated:.
Actions appearing in the content of an itemset are created within each item element, and their evaluation context is that of the data item for which the item was generated, as described in Evaluation Context. As with the repeat element, the itemset template content, including XForms Actions, is made unavailable.
Copies of the itemset template content, including XForms Actions, are made available via repeated item objects. Whenever a refresh is done, the sequence binding is re-evaluated to update the list of available choices. This element is similar to the value element , except that it works with subtrees of instance data rather than simple values.
The resource attribute is evaluated. If the resource is not found, or it is not an XForm, an xforms-link-error is dispatched to the control element, and the control element has no further effect; otherwise the resource is embedded in the current form at the current textual position.
The initial attribute is evaluated and the node and all its descendants [do we select for relevance? The embedded form is further initialised and processed in the normal way.
Whenever the embedded form processes a return action , the action's values are used to replace the content of the single node binding of the control element. A container control is a control that combines other controls in its content into user interfaces. Common , Appearance , Single Item Binding optional. Common , UI Common , selected xs:boolean , name xs:string. This control aggregates and sets the context for a group of enclosed controls; groups can be nested.
The optional label represents a label for the entire group. The optional collapse attribute makes the group interactively collapsible. A group should have a block layout by default e. If the collapse attribute is present, the group is interactively collapsible, and the presentation of the group should make this apparent to the user. If the value of the attribute is open then the group and its label are made available to the user; if the value is closed , only the label is made available.
Activating the group toggles between the two states. If a group element is bound to a node, only the relevant model item property has an effect. If a group is disabled, then so is the entire content of the group.
This is a container control that allows parts of the user interface to be switched in and out. It defines one or more case elements, one of which is rendered at any given time.
Initially, and, if there are case elements with a name attribute, any time the value of the Single Node Binding if present changes:. If a switch element is bound to a node via a Single Item Binding, but no case element has a name attribute, only the relevant model item property of the bound value has an effect, and changes to the bound value do not cause a new case to be selected.
0コメント