Как передать значение виджета HTML из формы HTML в Xquery в eXist-db? - PullRequest
0 голосов
/ 26 мая 2020

В моем намерении этот вопрос представляет собой универсализацию конкретной проблемы c, указанной в предыдущем запросе: см. Связанный вопрос (поэтому я осмеливаюсь отправить второй запрос помощи). Я до сих пор не могу найти ответ на вопрос, как именно значение виджета html может быть передано в Xquery.

Специфицированный виджет c представляет собой текстовое поле, добавленное в форму html (не в XForm!) с помощью внешней функции, код которой можно найти в упомянутом связанном вопросе. Итак, соответствующий фрагмент кода html (после выполнения функции) следующий:

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

В моем "query_update_notabene.xq" я просто не могу получить значение textarea, которое соответствует текстовому содержимому (новому или отредактированному), которое нужно сохранить обратно в файл xml. Я перепробовал все вкусы, которые мог придумать, в отношении следующих двух возможностей:

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

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

Но, похоже, ничего не работает, даже что-то вроде:

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

Может кто-нибудь поможет?

Спасибо

Алекс

1 Ответ

1 голос
/ 26 мая 2020

Как я нашел решение, отвечаю сам. Как обычно в программировании нельзя использовать аналогию, нужно быть предельно точным! Ошибка заключалась в использовании здесь «id» вместо «name»:

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

Это означает, что, возвращаясь к созданию Xquery, необходимо изменить следующее:

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

в:

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

Как следствие, Xquery теперь может обрабатывать asp содержимое текстового поля с помощью простого:

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