如何使用 eXist-db 和 xsltForms 通过浏览器编辑 xml 文件
Posted
技术标签:
【中文标题】如何使用 eXist-db 和 xsltForms 通过浏览器编辑 xml 文件【英文标题】:How to edit a xml file via browser with eXist-db and xsltForms 【发布时间】:2018-02-28 17:41:10 【问题描述】:我对 eXist-db 比较陌生。我已经构建了一个在浏览器中显示 XML 文档的应用程序,并实现了基本搜索。
我有一个用作数据库的 .xml 文件;它包含以下记录:
<person xml:id="pe0001"> <persName> <surname>Name</surname> <forename>Surname</forename> </persName> </person>
我希望能够通过浏览器编辑此文件;例如,编辑一个人的姓名,或添加一条新记录。
我浏览了 eXist-db 文档,查看了示例,阅读了 wikibooks - 我还没有找到我需要的东西。我只需要一个文本区域,有人可以在其中输入/编辑一些文本,这些文本将被推送(我猜是使用 PUT)到 .xml 文件中。
XSLTForms 是我的最佳选择吗?谁能给我一些方向/建议/例子?谢谢!
【问题讨论】:
【参考方案1】:根据用例,您可能想看看默认文档应用程序如何让用户打开(并运行)eXide 中的示例(使用 loadsource.js)。
对于简单的 xml 编辑,eXide 功能强大。
【讨论】:
【参考方案2】:感谢您的反对 :) 。无论如何,我已经创建了一个 .xq 文件,它获取我想要编辑的节点的 id
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>
【讨论】:
【参考方案3】:我认为对于像您作为示例显示的相对简单的记录,好的 ole HTML 表单将是最简单的解决方案,它会在 eXist-db 端触发一个 XQuery 脚本来实际更新数据。例如,XForms 几乎没有什么好处,而且肯定会涉及到一个陡峭的学习曲线。
【讨论】:
以上是关于如何使用 eXist-db 和 xsltForms 通过浏览器编辑 xml 文件的主要内容,如果未能解决你的问题,请参考以下文章
eXist-db 上的 XML:错误:XPST0003 意外令牌
如何在 eXide (eXist-db) 中显示超过 10 个结果?