Posted by
mar on
Jan 15, 2010; 6:04pm
URL: https://discuss.orbeon.com/When-I-persist-my-instance-the-XML-data-is-inverted-tp1010066p1015119.html
Alex,
I read that how-to. It does not seem apply to what I'm doing which is
adding elements (in an attempt to get them added in a specific order) to
my instance at xforms-model-construct time. I figured out a way to do it
but it seems, at best, kludge to me. I have to add parent elements first
followed by child elements. So parent elements are done via
<xforms:action ev:event="xforms-model-construct-done">. Child elements
are done via <xforms:action ev:event="xforms-ready">. Elements that need
to come before sibling elements have to have their xforms:actions come
after their sibling elements actions in the xform document.
Below is an example of my solution. If there is a better way please let
me know. The persisted instances needs to be in the following order and
the xforms:action(s) are they only way I've come up with so far to do
it.
<root>
<addServer>
<addServer-fields/>
</addServer>
<addFilesystem>
<addFilesystem-fields>
<<contacts-list/>
</addFilesystem>
<addDatabase>
<addDatabase-fields/>
<contacts-list/>
</addDatabase>
</root>
<xforms:action ev:event="xforms-model-construct-done">
<xforms:insert context="xxforms:instance('addServers-instance')"
nodeset="addDatabase"
origin="xxforms:instance('addDatabase-instance')"/>
</xforms:action>
<xforms:action ev:event="xforms-model-construct-done">
<xforms:insert context="xxforms:instance('addServers-instance')"
nodeset="addFilesystem"
origin="xxforms:instance('addFilesystem-instance')"/>
</xforms:action>
<xforms:action ev:event="xforms-model-construct-done">
<xforms:insert context="xxforms:instance('addServers-instance')"
nodeset="addServer" origin="xxforms:instance('addServer-instance')"/>
</xforms:action>
<xforms:action ev:event="xforms-ready">
<xforms:insert
context="xxforms:instance('addServers-instance')/addDatabase"
nodeset="contacts-list"
origin="xxforms:instance('addDatabase-contacts-list-instance')"/>
</xforms:action>
<xforms:action ev:event="xforms-ready">
<xforms:insert
context="xxforms:instance('addServers-instance')/addDatabase"
nodeset="addDatabase-fields"
origin="xxforms:instance('addDatabase-field-template')"/>
</xforms:action>
<xforms:action ev:event="xforms-ready">
<xforms:insert
context="xxforms:instance('addServers-instance')/addFilesystem"
nodeset="contacts-list"
origin="xxforms:instance('addFilesystem-contacts-list-instance')"/>
</xforms:action>
<xforms:action ev:event="xforms-ready">
<xforms:insert
context="xxforms:instance('addServers-instance')/addFilesystem"
nodeset="addFilesystem-fields"
origin="xxforms:instance('addFilesystem-field-template')"/>
</xforms:action>
<xforms:action ev:event="xforms-ready">
<xforms:insert
context="xxforms:instance('addServers-instance')/addServer"
nodeset="addServer-fields"
origin="xxforms:instance('addServer-field-template')"/>
</xforms:action>
Thanks.
Martin
-----Original Message-----
From: Alessandro Vernet [mailto:
[hidden email]]
Sent: Thursday, January 14, 2010 8:30 PM
To:
[hidden email]
Subject: [ops-users] Re: RE: Re: RE: Re: When I persist my instance the
XML data is inverted
Martin,
I think that this how-to will help (linked below), in particular the
paragraph about inserting at the end. But of course, the whole thing
makes a good read! :)
http://wiki.orbeon.com/forms/how-to/repeat-insert-positionAlex
On Jan 12, 2010, at 3:03 PM, "Schwartzman, Martin"
<
[hidden email] > wrote:
> Ethan,
>
> I tried
>
> <xforms:insert
> context="xxforms:instance('addServers-instance')/addServer/
> child::node()
> [last()]" nodeset="contacts-list"
> origin="xxforms:instance('addServer-contacts-list-instance')"/>
>
> because I want to add the contacts-list after the
> <serverOperatingSystem> element but this failed to add anything.
>
> For grins, I also tried:
> <xforms:insert
> context="xxforms:instance('addServers-instance')/addServer"
> nodeset="contacts-list/child::node()[last()]"
> origin="xxforms:instance('addServer-contacts-list-instance')"/>
>
> but this had no effect.
>
> Thanks.
>
> Martin
>
> ________________________________
>
> From: Ethan Gruber [mailto:
[hidden email]]
> Sent: Tuesday, January 12, 2010 2:34 PM
> To:
[hidden email]
> Subject: [ops-users] Re: RE: Re: When I persist my instance the XML
> data is inverted
>
>
> Martin,
>
> try nodeset="contacts-list/child::node()[last()]". I think that ought
> to insert an instance after the last <contacts> in the <contact-list>.
>
> Ethan
>
>
> On Tue, Jan 12, 2010 at 3:31 PM, Schwartzman, Martin
> <
[hidden email]> wrote:
>
>
> Alex,
>
> Is there a way to insert an element into a instance as the last
> element
> in the instance (in document order) instead of the first? I
> tried:
>
> <xforms:action ev:event="xforms-ready">
> <xforms:insert
> context="xxforms:instance('addServers-instance')/addServer"
> nodeset="contacts-list"
> origin="xxforms:instance('addServer-contacts-list-instance')"
> at="last()" position="after" />
> </xforms:action>
>
> But this adds the addDatabase-contacts-list-instance elements
> before the
> initial <serverOperatingSystem> element in the addServer element.
>
> <addServer sectionLabel="Add Server Header">
> <contacts-list>
> <contacts>
> <contactName/>
> <phoneNumber/>
> <emailAddress/>
> <totalCost/>
> </contacts>
> </contacts-list>
> <serverOperatingSystem>windows</serverOperatingSystem>
> </addServer>
>
>
>
> Thanks.
>
> Martin
> ________________________________
>
> From: Alessandro Vernet [mailto:
[hidden email]]
> Sent: Monday, January 11, 2010 12:55 PM
> To:
[hidden email]
>
> Subject: [ops-users] Re: When I persist my instance the XML data is
>
> inverted
>
>
> Martin,
>
> I don't see any reason why this would happen. I recommend you
> enable the
> XForms inspector, and check that the order is correct just before
> the
> submission happens. If it is, the use a tool like tcpmon to see
> what
> goes over HTTP, to check that the order is indeed changed. If you
> can
> confirm this, then could you create an XForms sandbox test case
> that
> shows this behavior?
>
> Alex
>
>
>
> On Jan 8, 2010, at 3:37 PM, "Schwartzman, Martin"
> <
[hidden email]> wrote:
>
>
>
> All,
>
> For some reason when I persist my instance the XML data is
> inverted. If anyone can tell me why this is happening and how to
> correct
> it I would greatly appreciate it.
>
> The model looks like:
>
> <xforms:model id="rootModel">
>
> <xforms:instance id="my-instance">
>
> <my-instance-main>
>
> <books>
>
> <book>
>
> <title/>
>
> <author/>
>
> </book>
>
> </books>
>
> <houses>
>
> <house>
>
> <address/>
>
> <sqfeet/>
>
> </house>
>
> </houses>
>
> </my-instance-main>
>
> </xforms:instance>
>
> </xforms:model>
>
> The data is persisted via:
>
> <xforms:submission id="save-submission-xml"
> ref="xxforms:instance('my-instance')"
>
> resource="/exist/rest/db/orbeon/xforms-sr/addServers-instance.xml"
> method="put" replace="none">
>
> </xforms:submission>
>
> I don't understand why the <houses> element is
> coming
> before the <books> element.
>
> <my-instance-main>
>
> <houses>
>
> <house>
>
> <address/>
>
> <sqfeet/>
>
> </house>
>
> </houses>
>
> <books>
>
> <book>
>
> <title/>
>
> <author/>
>
> </book>
>
> </books>
>
> </my-instance-main>
>
>
> --
> You receive this message as a subscriber of the
>
[hidden email] mailing list.
> To unsubscribe: <mailto:
[hidden email]>
> mailto:
[hidden email]
> For general help: <mailto:
[hidden email]?subject=help>
> mailto:
[hidden email]?subject=help
> OW2 mailing lists service home page:
> <
http://www.ow2.org/wws>
>
http://www.ow2.org/wws>
>
>
>
>
> --
> You receive this message as a subscriber of the
[hidden email]
> mailing list.
> To unsubscribe: mailto:
[hidden email]
> For general help: mailto:
[hidden email]?subject=help
> OW2 mailing lists service home page:
http://www.ow2.org/wws>
>
>
>
>
> --
> You receive this message as a subscriber of the
[hidden email]
> mailing list.
> To unsubscribe: mailto:
[hidden email]
> For general help: mailto:
[hidden email]?subject=help
> OW2 mailing lists service home page:
http://www.ow2.org/wws--
You receive this message as a subscriber of the
[hidden email] mailing list.
To unsubscribe: mailto:
[hidden email]
For general help: mailto:
[hidden email]?subject=help
OW2 mailing lists service home page:
http://www.ow2.org/wws