如何使用 eXist-db 和 xsltForms 通过浏览器编辑 xml 文件

How to edit a xml file via browser with eXist-db and xsltForms

我对 eXist-db 比较陌生。我已经构建了一个在浏览器中显示 XML 文档并实现基本搜索的应用程序。

我有一个 .xml 文件用作数据库;它包含如下记录:

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

我希望能够通过浏览器编辑这个文件;例如,编辑一个人的名字,或添加一条新记录。

我浏览了 eXist-db 文档,查看了示例,阅读了 wikibooks - 我还没有找到我需要的东西。我只需要一个文本区域,有人可以在其中 input/edit 一些文本,这些文本将被推送(我猜是使用 PUT)到 .xml 文件中。

XSLTForms 是我的最佳选择吗?谁能好心给我一些 direction/suggestion/example?谢谢!

我认为对于像您作为示例所示的相对简单的记录,好的 ole HTML 表单将是最简单的解决方案,它会在实际更新数据的 eXist-db 端触发 XQuery 脚本。比方说,XForms 提供的收益很少,而且肯定涉及陡峭的学习曲线。

感谢投反对票 :)。无论如何,我已经创建了一个 .xq 文件,它获取了我想要编辑的节点的 ID

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

然后 returns 这个 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>

根据用例,您可能想看看默认文档应用程序如何让用户打开(和 运行)eXide 中的示例(使用 loadsource.js)。

对于简单的 xml 编辑,eXide 功能强大。