Created
October 23, 2017 23:19
-
-
Save avernet/dc3bcaefd1c1fd7df9022834a83767c4 to your computer and use it in GitHub Desktop.
Creating iterations based on the result from a service
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<xh:html xmlns:xh="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" | |
xmlns:xs="http://www.w3.org/2001/XMLSchema" | |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xmlns:ev="http://www.w3.org/2001/xml-events" | |
xmlns:xi="http://www.w3.org/2001/XInclude" | |
xmlns:xxi="http://orbeon.org/oxf/xml/xinclude" | |
xmlns:xxf="http://orbeon.org/oxf/xml/xforms" | |
xmlns:exf="http://www.exforms.org/exf/1-0" | |
xmlns:fr="http://orbeon.org/oxf/xml/form-runner" | |
xmlns:saxon="http://saxon.sf.net/" | |
xmlns:sql="http://orbeon.org/oxf/xml/sql" | |
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" | |
xmlns:fb="http://orbeon.org/oxf/xml/form-builder"> | |
<xh:head> | |
<xh:title>Untitled Form</xh:title> | |
<xf:model id="fr-form-model" xxf:expose-xpath-types="true"> | |
<!-- Main instance --> | |
<xf:instance id="fr-form-instance" xxf:exclude-result-prefixes="#all" xxf:index="id"> | |
<form> | |
<states-section> | |
<states-grid> | |
</states-grid> | |
</states-section> | |
</form> | |
</xf:instance> | |
<xf:action observer="get-states-submission" event="xforms-submit-done"> | |
<xf:var name="states" value="xxf:instance('fr-service-response-instance')"/> | |
<xf:action iterate="$states/state"> | |
<xf:var name="state" value="."/> | |
<xf:insert | |
context="xxf:instance('fr-form-instance')/states-section/states-grid" | |
ref="states-grid-iteration" | |
origin="xxf:element( | |
'states-grid-iteration', | |
( | |
xxf:element('abbreviation', $state/@abbreviation/string()), | |
xxf:element('name-en', $state/@name/string()), | |
xxf:element('name-fr', $state/@name-fr/string()) | |
) | |
)" | |
/> | |
</xf:action> | |
</xf:action> | |
<!-- Bindings --> | |
<xf:bind id="fr-form-binds" ref="instance('fr-form-instance')"> | |
<xf:bind id="states-section-bind" name="states-section" ref="states-section"> | |
<xf:bind id="states-grid-bind" ref="states-grid" name="states-grid"> | |
<xf:bind id="states-grid-iteration-bind" ref="states-grid-iteration" | |
name="states-grid-iteration"> | |
<xf:bind id="abbreviation-bind" ref="abbreviation" name="abbreviation"/> | |
<xf:bind id="name-en-bind" ref="name-en" name="name-en"/> | |
<xf:bind id="name-fr-bind" ref="name-fr" name="name-fr"/> | |
</xf:bind> | |
</xf:bind> | |
</xf:bind> | |
</xf:bind> | |
<!-- Metadata --> | |
<xf:instance xxf:readonly="true" id="fr-form-metadata" xxf:exclude-result-prefixes="#all"> | |
<metadata> | |
<application-name>a</application-name> | |
<form-name>a</form-name> | |
<title xml:lang="en">Untitled Form</title> | |
<description xml:lang="en"/> | |
</metadata> | |
</xf:instance> | |
<!-- Attachments --> | |
<xf:instance id="fr-form-attachments" xxf:exclude-result-prefixes="#all"> | |
<attachments> | |
<css mediatype="text/css" filename="" size=""/> | |
<pdf mediatype="application/pdf" filename="" size=""/> | |
</attachments> | |
</xf:instance> | |
<!-- All form resources --> | |
<xf:instance xxf:readonly="true" id="fr-form-resources" xxf:exclude-result-prefixes="#all"> | |
<resources> | |
<resource xml:lang="en"> | |
<abbreviation> | |
<label>Abbreviation</label> | |
<hint/> | |
</abbreviation> | |
<name-en> | |
<label>Name in English</label> | |
<hint/> | |
</name-en> | |
<name-fr> | |
<label>Name in French</label> | |
<hint/> | |
</name-fr> | |
<states-section> | |
<label>States</label> | |
</states-section> | |
</resource> | |
</resources> | |
</xf:instance> | |
<xf:instance xxf:readonly="true" xxf:exclude-result-prefixes="#all" | |
id="states-grid-template"> | |
<states-grid-iteration> | |
<abbreviation/> | |
<name-en/> | |
<name-fr/> | |
</states-grid-iteration> | |
</xf:instance> | |
<xf:instance id="get-states-instance" class="fr-service" xxf:exclude-result-prefixes="#all"> | |
<body xmlns:xxbl="http://orbeon.org/oxf/xml/xbl" | |
xmlns:fbf="java:org.orbeon.oxf.fb.FormBuilderXPathApi"><params/></body> | |
</xf:instance> | |
<xf:submission id="get-states-submission" class="fr-service" | |
resource="/xforms-sandbox/service/zip-states" | |
method="get" | |
serialization="none" | |
mediatype="none"/> | |
<xf:action id="populate-states-binding"> | |
<xf:action event="fr-run-form-load-action-after-controls" ev:observer="fr-form-model" | |
if="true()"> | |
<xf:send submission="get-states-submission"/> | |
</xf:action> | |
<xf:action event="xforms-submit" ev:observer="get-states-submission"> | |
<xf:var name="request-instance-name" value="'get-states-instance'"/> | |
<xf:action/> | |
</xf:action> | |
<xf:action event="xforms-submit-done" ev:observer="get-states-submission"/> | |
</xf:action> | |
</xf:model> | |
</xh:head> | |
<xh:body> | |
<fr:view> | |
<fr:body xmlns:xbl="http://www.w3.org/ns/xbl" xmlns:p="http://www.orbeon.com/oxf/pipeline" | |
xmlns:oxf="http://www.orbeon.com/oxf/processors"> | |
<fr:section id="states-section-control" bind="states-section-bind"> | |
<xf:label ref="$form-resources/states-section/label"/> | |
<fr:grid id="states-grid-control" bind="states-grid-bind" repeat="content" min="1" | |
template="instance('states-grid-template')" | |
apply-defaults="true" | |
fb:initial-iterations="first"> | |
<fr:c x="1" y="1" w="2"> | |
<xf:output id="abbreviation-control" bind="abbreviation-bind"> | |
<xf:label ref="$form-resources/abbreviation/label"/> | |
<xf:hint ref="$form-resources/abbreviation/hint"/> | |
<xf:alert ref="$fr-resources/detail/labels/alert"/> | |
</xf:output> | |
</fr:c> | |
<fr:c x="3" y="1" w="5" h="1"> | |
<xf:output id="name-en-control" bind="name-en-bind"> | |
<xf:label ref="$form-resources/name-en/label"/> | |
<xf:hint ref="$form-resources/name-en/hint"/> | |
<xf:alert ref="$fr-resources/detail/labels/alert"/> | |
</xf:output> | |
</fr:c> | |
<fr:c x="8" y="1" w="5" h="1"> | |
<xf:output id="name-fr-control" bind="name-fr-bind"> | |
<xf:label ref="$form-resources/name-fr/label"/> | |
<xf:hint ref="$form-resources/name-fr/hint"/> | |
<xf:alert ref="$fr-resources/detail/labels/alert"/> | |
</xf:output> | |
</fr:c> | |
</fr:grid> | |
</fr:section> | |
</fr:body> | |
</fr:view> | |
</xh:body> | |
</xh:html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment