Re: [Xsltforms-support] Saving multiple instances to the same xml file from within the same form
Brought to you by:
alain-couthures
From: Josselin M. <mor...@gm...> - 2021-02-03 12:04:04
|
Hi Alessandro, I don’t know if you saw the Alain’s answer, but as he said, the use of submission/@ref will help you to reach your goal. It will allow you to determine which instance should be saved by each submission. By default, when @ref isn’t specified, it is the first one. <xf:submission id="save-disciplina" ref="instance('list-disciplina')" method="post" action="query_save_disciplina.xq?id_dip={$id_dip}" replace="instance" instance="list-disciplina"> <xf:action ev:event="xforms-submit-done"> <xf:message level="modal">Dati correttamente aggiornati!</xf:message> </xf:action> <xf:action ev:event="xforms-submit-error"> <xf:message level="modal">Si è verificato un errore in fase di salvataggio!</xf:message> </xf:action> </xf:submission> <xf:submission id="save-curriculum" ref="instance('list-curriculum')" method="post" action="query_save_curriculum.xq?id_dip={$id_dip}" replace="instance" instance="list-curriculum"> <xf:action ev:event="xforms-submit-done"> <xf:message level="modal">Dati correttamente aggiornati!</xf:message> </xf:action> <xf:action ev:event="xforms-submit-error"> <xf:message level="modal">Si è verificato un errore in fase di salvataggio!</xf:message> </xf:action> </xf:submission> Best, Josselin > Le 29 janv. 2021 à 15:37, Alessandro via Xsltforms-support <xsl...@li...> a écrit : > > Hi all! > My attempt is that of managing two instances (which are targeting two different nodes of the same xml file) by means of two repeats contained within the same form. Inserting and deleting rows works well with respect to both the repeats, but it seems possible to finally save to the xml file only the instance that appears at the first place within the model. Why is it so? What am I missing here? > > Regards > Alex > > The following is my form: > > xquery version "3.0"; > > import module namespace my_funcs="http://www.my_funcs.net <http://www.my_funcs.net/>" at "modules/my_app_functions_2.xql"; > > declare variable $app_collection := 'resources/data'; > > declare variable $id_dip := request:get-parameter("id_dip", ""); > > let $disciplina := doc(concat($app_collection, '/', $my_funcs:my_employees_archive))/dipendenti/dipendente[@id=$id_dip]/disciplina > > let $curriculum := doc(concat($app_collection, '/', $my_funcs:my_employees_archive))/dipendenti/dipendente[@id=$id_dip]/curriculum > > let $new_value := doc(concat($app_collection, '/', $my_funcs:my_employees_archive))/dipendenti/options/new_item > > let $file := concat($app_collection, '/', $my_funcs:my_employees_archive) > > let $login := xmldb:login($app_collection, 'admin', 'password') > > let $form := > <html xmlns="http://www.w3.org/1999/xhtml <http://www.w3.org/1999/xhtml>" xmlns:xf="http://www.w3.org/2002/xforms <http://www.w3.org/2002/xforms>" xmlns:ev="http://www.w3.org/2001/xml-events <http://www.w3.org/2001/xml-events>" xmlns:xs="http://www.w3.org/2001/XMLSchema <http://www.w3.org/2001/XMLSchema>" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance <http://www.w3.org/2001/XMLSchema-instance>"> > <head> > <link rel="stylesheet" type="text/css" href="resources/css/schede_dipendenti_2.css" /> > <script src="resources/data/my_javascripts.js"/> > > <xf:model> > > <xf:instance id="list-curriculum"> > <data xmlns="">{$curriculum}</data> > </xf:instance> > > <xf:instance id="list-disciplina"> > <data xmlns="">{$disciplina}</data> > </xf:instance> > > <xf:submission id="save-disciplina" method="post" action="query_save_disciplina.xq?id_dip={$id_dip}" replace="instance" instance="list-disciplina"> > <xf:action ev:event="xforms-submit-done"> > <xf:message level="modal">Dati correttamente aggiornati!</xf:message> > </xf:action> > <xf:action ev:event="xforms-submit-error"> > <xf:message level="modal">Si è verificato un errore in fase di salvataggio!</xf:message> > </xf:action> > </xf:submission> > > <xf:submission id="save-curriculum" method="post" action="query_save_curriculum.xq?id_dip={$id_dip}" replace="instance" instance="list-curriculum"> > <xf:action ev:event="xforms-submit-done"> > <xf:message level="modal">Dati correttamente aggiornati!</xf:message> > </xf:action> > <xf:action ev:event="xforms-submit-error"> > <xf:message level="modal">Si è verificato un errore in fase di salvataggio!</xf:message> > </xf:action> > </xf:submission> > > </xf:model> > </head> > <body> > <center> > > <br/> > > <xf:group ref="instance('list-curriculum')/curriculum"> > <fieldset id="fieldset-list"> > <legend>Dati curriculari</legend> > <div class="header-disciplina"> > <table border="0"> > <tr> > <td> > <div class="leftColumn">Data 1</div> > </td> > <td style="width: 70px;"/> > <td> > <div class="leftColumn">Data 2</div> > </td> > <td style="width: 70px;"/> > <td> > <div class="leftColumn">Descrizione</div> > </td> > <td style="width: 70px;"/> > <td> > <div class="rightColumn">Note</div> > </td> > </tr> > </table> > </div> > > <xf:repeat id="list-cur" nodeset="riga"> > <table border="0" id="riga" class="list-table"> > > <tr> > <td> > <xf:input ref="data1/text()" class="short-input" /> > </td> > <td> > <xf:input ref="data2/text()" class="short-input" /> > </td> > <td> > <xf:input ref="descrizione/text()" class="long-input" /> > </td> > <td> > <xf:input ref="note/text()" class="long-input" /> > </td> > </tr> > > </table> > </xf:repeat> > </fieldset> > > <br/> > > <br/> > > <table border="0"> > <tr> > <td style="width: 15px;"/> > <td> > <xf:trigger> > <xf:label><div class="my_special_button">Elimina riga selezionata dalla lista delle categorie</div></xf:label> > <xf:action ev:event="DOMActivate"> > <xf:delete nodeset="riga" at="index('list-cur')" /> > </xf:action> > </xf:trigger> > </td> > <td style="width: 15px;"/> > <td> > <xf:trigger> > <xf:label><div class="my_special_button">Inserisci nuova categoria dopo riga selezionata</div></xf:label> > <xf:action ev:event="DOMActivate"> > <xf:insert nodeset="riga" at="index('list-cur')" position="after" /> > <xf:setvalue ref="riga[index('list-cur')]/data1/text()" value="'{$new_value}'"/> > <xf:setvalue ref="riga[index('list-cur')]/data2/text()" value="'{$new_value}'"/> > <xf:setvalue ref="riga[index('list-cur')]/descrizione/text()" value="'{$new_value}'"/> > <xf:setvalue ref="riga[index('list-cur')]/note/text()" value="'{$new_value}'"/> > </xf:action> > </xf:trigger> > </td> > </tr> > </table> > > <br/> > > <table border="0"> > <tr> > <td style="height: 40px;"/> > <td> > <xf:submit submission="save-curriculum"> > <xf:label><div class="my_special_button" style="width: 210px;">Salva modifiche ai dati disciplinari</div></xf:label> > </xf:submit> > </td> > </tr> > </table> > </xf:group> > > <xf:group ref="instance('list-disciplina')/disciplina"> > <fieldset id="fieldset-list"> > <legend>Dati disciplinari</legend> > <div class="header-disciplina"> > <table border="0"> > <tr> > <td> > <div class="leftColumn">Data</div> > </td> > <td style="width: 70px;"/> > <td> > <div class="rightColumn">Descrizione</div> > </td> > </tr> > </table> > </div> > > <xf:repeat id="list" nodeset="riga"> > <table border="0" id="riga" class="list-table"> > > <tr> > <td> > <xf:input ref="data/text()" class="short-input" /> > </td> > <td> > <xf:input ref="note/text()" class="iper-long-input" /> > </td> > </tr> > > </table> > </xf:repeat> > </fieldset> > > <br/> > > <br/> > > <table border="0"> > <tr> > <td style="width: 15px;"/> > <td> <!-- style="padding-top: 15pt;" --> > <xf:trigger> > <xf:label><div class="my_special_button">Elimina riga selezionata dalla lista delle categorie</div></xf:label> > <xf:action ev:event="DOMActivate"> > <xf:delete nodeset="riga" at="index('list')" /> > </xf:action> > </xf:trigger> > </td> > <td style="width: 15px;"/> > <td> > <xf:trigger> > <xf:label><div class="my_special_button">Inserisci nuova categoria dopo riga selezionata</div></xf:label> > <xf:action ev:event="DOMActivate"> > <xf:insert nodeset="riga" at="index('list')" position="after" /> > <xf:setvalue ref="riga[index('list')]/data/text()" value="'{$new_value}'"/> > <xf:setvalue ref="riga[index('list')]/note/text()" value="'{$new_value}'"/> > <!--<xf:setvalue ref="SelectedRow" value="index('list')" />--> > </xf:action> > </xf:trigger> > </td> > </tr> > </table> > > <br/> > > <table border="0"> > <tr> > <td style="height: 40px;"/> > <td> > <xf:submit submission="save-disciplina"> > <xf:label><div class="my_special_button" style="width: 210px;">Salva modifiche ai dati disciplinari</div></xf:label> > </xf:submit> > </td> > </tr> > <tr> > <td style="width: 40px;"/> > <td > > <xf:trigger> > <xf:label class="my_button"><div class="flipped">➜</div>Torna<div class="flipped">➜</div>indietro</xf:label> > <xf:action ev:event="DOMActivate"> > <xf:load resource="javascript:GoBack()" /> > </xf:action> > </xf:trigger> > </td> > </tr> > </table> > </xf:group> > > </center> > <br/> > <br/> > </body> > </html> > let $xslt-pi := processing-instruction xml-stylesheet {'type="text/xsl" href="../xsltforms/xsltforms.xsl"'} > return ($xslt-pi,$form) > > -- > Sent with Tutanota, the secure & ad-free mailbox: > https://tutanota.com > _______________________________________________ > Xsltforms-support mailing list > Xsl...@li... > https://lists.sourceforge.net/lists/listinfo/xsltforms-support |