Following Orbeon documentation about running xforms-with-java-applications, I deployed Orbeon's war file separately beside my java war on JBoss.
I tried creating 2 instances inside one model
<xforms:model id="fr-form-model">
<xforms:instance id="don-instance1">
<don>
<laptop>
</laptop>
</don>
</xforms:instance>
<xforms:instance id="don-instance2">
<don2>
<laptop2>
</laptop2>
</don2>
</xforms:instance>
</xforms:model id="fr-form-model">
I can't seem to access the second xforms instance from the
<xforms:input ref="instance('don-instance')/don/laptop2">
<xforms:label>Enter a Name:</xforms:label>
</xforms:input>
Accessing the first xforms instance is fine, as long as I DON'T use the instance() function
<xforms:input ref="/don/laptop">
<xforms:label>Enter a Name:</xforms:label>
</xforms:input>
Somehow the instance() method isn't working as I expect, What am I missing ?
Revised Complete XML:
<xhtml:html
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:xforms="http://www.w3.org/2002/xforms"
xmlns:xxforms="http://orbeon.org/oxf/xml/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
>
<xhtml:head>
<xhtml:title>Simple</xhtml:title>
<xforms:model >
<xforms:instance id="don-instance1">
<don1>
<laptop1>
</laptop1>
</don1>
</xforms:instance>
<xforms:instance id="don-instance2">
<don2>
<laptop2>
</laptop2>
</don2>
</xforms:instance>
<xforms:submission id="submit_metadata" action="../processor.jsp" method="post"/>
</xforms:model>
</xhtml:head>
<xhtml:body>
<xforms:input ref="instance('don-instance1')/don1/laptop1">
<xforms:label class="composers-label">Laptop1: </xforms:label>
<xhtml:br />
</xforms:input>
<xforms:input ref="instance('don-instance2')/don2/laptop2">
<xforms:label class="composers-label">Laptop2: </xforms:label>
<xhtml:br />
</xforms:input>
<xhtml:br />
<xhtml:br />
<xforms:submit submission="submit_metadata">
<xforms:label class="composers-label">Submit</xforms:label>
</xforms:submit>
<xhtml:br />
<fr:xforms-inspector/>
</xhtml:body>
</xhtml:html>
As per the code, i see that you are not referring the node names properly. If you want to access the laptop node in first instance then your code should be like this:
<xforms:input ref="instance('don-instance1')/laptop">
<xforms:label>Enter a Name:</xforms:label>
</xforms:input>
Same way, if you want to access the node in second instance, it should be
<xforms:input ref="instance('don-instance2')/laptop2">
<xforms:label>Enter a Name:</xforms:label>
</xforms:input>