如何使用 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 功能强大。
我对 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 功能强大。