Solution 1 :

As I have found the solution, I answer myself. As usual in programming one cannot use analogy, one must be perfectly precise! The error was to use “id” instead of “name” here:

<textarea id="my_textarea">loaded_text</textarea>

Which means, going back to the constructing Xquery, that the following:

<textarea id="my_textarea">{$my_content}</textarea> };

must be changed into:

<textarea name="my_textarea">{$my_content}</textarea> };

As a consequence, the Xquery can now grasp the textarea contents with a simple:

let $nota_text := request:get-parameter("my_textarea","")

Problem :

In my intention this question represents an universalization of a specific issue indicated in a previous request: see related question (this is why I dare to send a second help request). I still cannot find an answer to the problem of how exacltly an html widget’s value could be passed to an Xquery.

The specific widget is a textarea, added to an html form (not to an XForm!) by means of the external function, the code of which can be found within the mentioned related question. So, the relevant chunck of html code (once the function is been executed) is this:

  <form method="post" action="query_update_notabene.xq">
        <textarea id="my_textarea">loaded_text</textarea>
    <table border="0">
                <input type="submit" value="Salva nota">
            <td style="width: 20px;"></td>
                <input type="reset">

In my “query_update_notabene.xq” I’m simply not able to get the textarea value, which corresponds to the text content (new or edited) to be saved back to the xml file. I have tried all the flavours that I could think of with regard to the following two possibilities:

let $nota_text := request:get-parameter("my_textarea","")

let $nota_text := request:get-data()

But nothing seems to be working, not even something like:

let $nota_text := request:get-data()/body/form/div[@id='main']/textarea[@id='my_textarea']/text()

Can anyone help?




Leave a Reply

Your email address will not be published. Required fields are marked *