【问题标题】:Browser-based manipulation of XML documents via jQuery通过 jQuery 对 XML 文档进行基于浏览器的操作
【发布时间】:2025-12-27 07:50:12
【问题描述】:

背景

XSL 将 XML 文档转换为风格化的网页。用户可以通过使用 jQuery 对话框显示的表单向 XML 文档添加新元素(和属性)。 XML 文档将被转换为 PDF 文件、ASCII 文本文件、第三方格式等。只有编辑器需要基于网络。

考虑使用 XForms,但是 (1) 它似乎是一种死技术; (2) 似乎与 jQuery 没有无缝集成。

架构

目前的架构类似于:

Apache + PHP => 加载 XML => XSLTProcessor => XHTML + jQuery => Web 浏览器

用于编辑 XML 文档的建议架构类似于:

Web 浏览器 => jQuery => POST 编辑 => Apache + PHP => 保存 XML

每个 XML 文件小于 5,000 字节。

问题

  1. 您将如何刷新页面,以便立即发布和转换编辑内容,同时仍保持响应?
  2. 您将如何简化架构?

谢谢!

想法

查看了将 XML 转换为 JSON,然后将 JSON 转换回 XML(使用 Pear 的 XML_Serializer),但是输入的 XML 与输出的 XML 不同。

【问题讨论】:

    标签: php jquery xml json xslt


    【解决方案1】:

    您说得对,XForms 基本上已经死了,但这并不是因为出现了更好的东西,而是因为 Web 社区完全拒绝了 XML。 jQuery(以及几乎所有主要的 JavaScript 框架或库)不支持 XML。

    既然您拥有深深植根于 XML 的数据模型和工作流,我认为您仍然应该考虑使用 XForms。它将允许您删除所有转换步骤并从端到端使用 XML。如果您可以忽略 IE6-8,您也可以在浏览器中使用 XHTML。

    您也可以考虑使用浏览器 XML 编辑器,例如 Xopus

    【讨论】:

    • i.imgur.com/1bAbD.png (1) 用户添加了一件新设备; (2) 出现一个表单(jQuery modal dialog); (3) 用户提供名称并点击 Next/Done 或网页本身; (4) 新设备被添加到XHTML 页面以及XML 文档中。您知道 XForms 是否可以实现这种确切的场景?谢谢!
    • 您可以将 XForms 与您想要的任何东西混合使用,特别是如果您有客户端实现——它只是 div 中的一些字段。 XForms 唯一重要的部分是底层数据模型是 XML,并且模型与操作模型的字段是分开的,由绑定连接。如果您不使用 XForms,则必须使表单“数据模型”适应您的底层 XML 数据模型,并手动添加字段到模型的绑定。正如您通过 JSON 问题所发现的那样,这并非微不足道。
    • 再次感谢弗朗西斯。我在使用 XForms 时遇到的另一个问题是它依赖于 XML 模式 (XSD)。使用 XSD 无法轻松验证 XML;不过,它可以使用 RELAX NG 进行验证。从 RELAX NG 到 XSD 的转换充其量是不稳定的。我知道我可以将 XPath 表达式映射到 DIV 标记并执行 AJAX 调用来解决这个问题,并通过 DIV 刷新来重新加载转换后的页面。也许我只是需要更多的 XForms 知识。
    • XForms 不需要 XSD。事实上,我不知道有任何客户端 XForms 实现甚至可以使用 XSD。如有必要,您可以使用 xsi 类型注释您的 XForms 模型,但通常约束检查是在绑定中。更多实用知识见this XForms wikibook。请注意,我并不是说 XForms 绝对是必经之路,但如果您真的拥有纯 XML 架构,那么您不应该因为其他人都拥有而打折。
    • 同意,弗朗西斯。我一直在阅读w3.org/MarkUp/Forms/2003/xforms-for-html-authors.html。我打折的另一个原因是我找不到任何(免费的)PHP 开源实现。 (我几乎无法控制托管的 Web 服务器。)再次感谢。新年快乐。