在浏览器中突出显示和编辑XML

尝试在浏览器中为用户提供可编辑的XML页面。

例如,以下是XML的一部分。

 10000 johndoe@johndoe.com  

当在浏览器(IE或FF)中向用户呈现上述内容时,用户应该能够突出显示属性或值。 突出显示并按下第二个鼠标按钮时,将弹出一个菜单进行编辑。 对于属性和标签,它可以是ID-TEST-PRESENT或ID-TEST-OPTIONAL。 现在代替ID,该属性应在选中时更改为ID-TEST-PRESENT。

同样,对于值,可以显示文本框,用户可以在其中输入新值。 然后,需要将此更新的XML文件发送到后端并保存。

这可行吗? 如果是的话,最简单的方法是什么。

我一直在编写嵌入式应用程序。 这是我在网络浏览器方面的第一次尝试。 任何帮助表示赞赏。

当然这是可行的,但这不是微不足道的。 至少不适合那些不习惯使用Javascript和操纵DOM的人。 您必须解析XML并在每个元素上使用Javascript事件侦听器创建HTML文档。

您可以尝试使用现有组件并在必要时进行修改。 我在这里发现了类似的问题:

https://stackoverflow.com/questions/378205/web-xml-editor-with-xml-syntax-highlighting

除非您正在处理通用XML文件,否则您最好只阅读XML并生成标准HTML表单。 最简单的方法是将所有内容都基于数据库,如果需要,将数据库导出到后端进程。 这使得添加/编辑多行数据变得更加简单

创建用于编辑特定XML词汇表中的信息的界面的一种方法是使用XForms。 (我认为它是迄今为止最容易和最好的,但是YMMV。)给定适当的基础设施(见下文),使用XForms来描述所涉及的内容:

  1. 使用XHTML + XForms编写表单。 为希望用户能够编辑的XML部分指定编辑小部件; 使XML的其他部分成为只读(或根本不显示它们)。 定义您希望如何提交编辑数据。 使用CSS的样式。
  2. 当用户打开表单时,XForms处理器会自动加载XML文档,并提供您在步骤1中指定的XForm中指定的编辑窗口小部件。用户进行编辑。
  3. 当用户点击提交按钮时,浏览器将数据作为XML发送回服务器,服务器上的软件执行必要的validation(这是来自开放网络的用户输入,您确实要检查它)并处理它适当。

正如您所看到的,它比使用AJAX滚动您自己更简单(至少在您设置基础结构后)。

XForms所需的基础结构部分取决于您正在使用的XForms实现。

对于基于客户端的XForms实现(例如来自AgenceXML的XSLTForms,或来自EMC的公式),您需要(a)服务器上的软件副本(在XSLTForms的情况下,这意味着一个XSLT样式表,一个Javascript库,和(一个CSS文件),(b)可能是表单本身中的适当链接(如何执行此操作因实现而异),以及(c)愿意接受PUT请求的服务器。 在某些情况下,它将是(c)最难设置,但任何提供WebDAV接口的服务器都可以,因此SVN具有自动版本控制,Apache(单独或在Subversion之上)和其他工具都可以使用。

对于基于服务器的实现(例如Orbeon Forms或BetterForm),您需要安装XForms实现并在Web服务器上运行它; 因为它们通常是servlet,所以你需要将它们放在servlet引擎中。 一般来说,它们将附带某种forms的WebDAV服务器。

W3C和CWI的Steven Pemberton撰写了一篇有用的XForms教程介绍 ; 我维护了一个指向这个和其他XForms相关材料的指针列表,这些材料也可能有所帮助。

为了做到这一点,你需要做很多工作。 要进行通用编辑,您需要以下内容

  1. 后端的XML解析器将XML文件解析为2种格式(A)转换为前端所需的HTML格式。 (B)转换为所需的后端格式。 这很棘手,需要一些思考。 蛮力方法很容易但效率很低。
  2. 设置与脚本的AJAX连接,该连接可以识别和识别部分XML。 为此,您需要一些机制来识别该部分……可能是通过HTML传递的ID。
  3. AJAX的接口应该更新数据库/文件并做必要的事情。

这是一个简单的布局。 它需要做很多工作。 做一些研究

项目

  • codemirror似乎是最好的
  • jquery.xmleditor可能就是你要找的东西。 它们提供了用于编辑XML的图形UI。 对于基于文本的XML编辑器,它们依赖于Cloud9编辑器。 请注意,Cloud9已获得GPL许可。
  • LiveXMLEdit更像是一个类似浏览器的编辑器,但也许它也有帮助
  • AXEL是一个用于基于文档模板创建XML创作应用程序的库。