XForms/调试 XForms
如果您是 XForms 的新手,并且在调试 XForms 时遇到问题,您并不孤单。XForms 调试可能很棘手,尤其是对于新手来说。如果您关注 XForms 的新闻组,您会发现一些问题经常出现。
这些问题按频率排序,大致包括以下内容:
- 确保使用
.xhtml
扩展名命名您的文件。包括 FireFox 在内的许多浏览器不会在扩展名为 .htm 或 .html 的文件中查找 XML 标签。 - 忘记将实例数据与命名空间或默认命名空间关联的问题。可以通过在实例变量中添加
xmlns=""
参数来解决此问题。 - 文档主体中命名空间不正确或缺失。例如,如果默认命名空间是 html,则标签 <input> 是有效的,但浏览器会将其视为 <html:input> 而不是 <xf:input>。当用户从使用 XForms 作为默认命名空间的地方复制 XForms 示例代码时,这种情况经常发生。这是一个很好的理由,教程和培训开发人员不应将 XForms 作为默认命名空间。
- 模型和视图之间的绑定不正确。这通常是由于 “ref” 或 “nodeset” 属性定义不正确,或者组或重复更改了数据元素的路径前缀。
- 无法将表单绑定到实例,因为 XForms 处理器无法找到一个或多个实例特定的命名空间。如果您在将 XForm 流式传输到用户之前使用 XSLT 或 XQuery 对其进行了自定义,则处理器可能会将一些命名空间的声明委派给它们首次出现的实例,因为它将 XForm 上 ref 和 bind 属性的内容视为只是内容。但是,您的 XForms 处理器可能希望在父轴上定义 ref 属性中命名空间的定义,并且可能不会在模型实例中查找任何声明。当这种情况发生时,您需要手动构造根 xhtml:html 节点,并明确声明出现在您的表单中的任何命名空间。
有些人发现这个 XForms 验证器很有用
http://xformsinstitute.com/validator
该程序将查找 XForms 示例中的常见错误。
有一个很好的用于 XSLT 的 Eclipse 插件,它还提供了一个 XPath 验证 “视图”。参见:http://wiki.eclipse.org/XSLT_Project
最实用的 Firefox 扩展之一是 XForms Buddy 调试器。此工具允许您在 Firefox 浏览器中运行 XForms 时,以可视方式检查模型中的所有实例。这对于确保动态配置的实例值由 XForms 正确设置特别有用。该网站的链接是:这里
还有一种方法可以在您的 JavaScript 代码中以可视方式查看您的绑定。
这些接口在这里有文档记录
以下是一些针对调试 XForms 的人员的建议
有时,当您创建对 Web 服务的复杂提交时,您需要确保 XForms 应用程序生成的內容与 Web 服务期望的內容完全一致。有时,Web 服务供应商会提供一个示例 Web 表单客户端,该客户端可以正确调用他们的服务,但有关调用该服务的文档却有所欠缺。解决此问题的一种方法是观察 HTTP 数据包离开工作应用程序,并将它们与您的 XForms 的 HTTP 数据包进行比较。可以使用 HTTP 代理工具(如 Charles)来完成此操作,该工具也可以作为 Firefox 扩展运行。
标准 Web 开发调试器的 “网络” 标签,如 Firebug 和 Google Chrome Javascript 控制台,可用于观察浏览器与之之间进出的网络流量,从而允许您验证提交内容、方法和 HTTP 错误代码是否符合预期。
代理是一种充当 Web 服务器的工具。它将自己置于您的 Web 浏览器和服务器之间,并告诉您浏览器刚刚发送给 Web 服务器的内容。为此,您必须设置您的 Web 浏览器使用代理(通过告诉它将所有内容转发到另一个 IP 地址),然后代理将其转发到服务。
使用完代理后,请确保记得通过转到 Firefox 工具/选项/常规/连接设置并单击直接连接到互联网来禁用代理。如果您不这样做,当 Charles 或 Tamper Data 关闭时,您的 Web 浏览器将不再起作用。
有一些 XForms 是为了使用 HTTP put、HTTP post 和 [w:WebDAV:WebDAV] 而设计的。WebDAV 允许您不仅存储表单的第一个版本,还可以返回并查看以前的版本。Subversion 常见问题解答 [1] 建议您运行 Wireshark 数据包嗅探器,查看 HTTP 消息中的数据。
要验证数据文件是否格式正确,您可以使用 RUWF(您格式正确吗)?XML 语法检查器
某些版本的 IE 6.0 尚未为 IE6 设置正确的 mime 类型。要解决此问题,您必须在 Microsoft Windows 注册表中添加一个条目
打开命令 shell 输入命令 “regedit”
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/xhtml+xml] "CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}" "Encoding"=hex:08,00,00,00 "Extension"=".xhtml"