Как редактировать файл xml через браузер с помощью eXist-db и xsltForms

Я относительно новичок в eXist-db. Я уже создал приложение, которое отображает XML-документы в браузере и реализовал базовый поиск.

У меня есть файл .xml, который работает как база данных; содержит такие записи, как:

<person xml:id="pe0001">
    <persName>
        <surname>Name</surname>
        <forename>Surname</forename>
    </persName>
</person>

Я хотел бы иметь возможность редактировать этот файл через браузер; например, отредактируйте имя человека или добавьте новую запись.

Я просмотрел документацию по eXist-db, посмотрел примеры, почитал викиучебники — пока не нашел того, что мне нужно. Мне просто нужна текстовая область, в которой кто-то может вводить/редактировать некоторый текст, который будет помещен (я думаю, с помощью PUT) в файл .xml.

Является ли XSLTForms лучшим вариантом для меня? Может ли кто-нибудь быть так любезен, чтобы дать мне какое-то направление/предложение/пример? Спасибо!


person HBMCS    schedule 19.09.2017    source источник


Ответы (3)


Я думаю, что для относительно простых записей, как вы показали в качестве примера, старые добрые HTML-формы были бы самым простым решением, вызывая сценарий XQuery на стороне eXist-db, который фактически обновляет данные. XForms, скажем, предлагают мало преимуществ, и здесь, безусловно, задействована крутая кривая обучения.

person Magdalena Turska    schedule 20.09.2017

Спасибо за минус :). Во всяком случае, я создал файл .xq, который захватывает идентификатор узла, который я хочу редактировать.

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

а затем возвращает этот HTML-код:

голова

     <xf:model>
        <xf:instance id="data-instance" src="my.xml" xmlns="http://www.tei-c.org/ns/1.0" />
        <xf:submission id="read-from-file" method="get"
            action="my.xml" replace="instance" instance="data-instance" />
        <xf:submission id="save-to-file" method="put"
            action="my.xml" replace="instance" instance="data-instance" />
    </xf:model>

тело

     <xf:input xmlns="" ref="//tei:person[@xml:id='{$id}']/tei:persName/tei:surname">
        <xf:label>Surname</xf:label>
    </xf:input>
     <xf:input xmlns="" ref="//tei:person[@xml:id='{$id}']/tei:persName/tei:forename">
        <xf:label>Name</xf:label>
    </xf:input>

После редактирования текста пользователь отправляет его с помощью следующей кнопки:

    <xf:submit submission="save-to-file">
        <xf:label>Save</xf:label>
    </xf:submit>
person HBMCS    schedule 21.09.2017

в зависимости от варианта использования вы можете взглянуть на то, как приложение документации по умолчанию позволяет пользователям открывать (и запускать) пример в eXide (используя loadsource.js).

Для простого редактирования xml eXide вполне способен.

person duncdrum    schedule 16.10.2017