=============================================
======使用OPS提供的dialog实现对话框功能======
=============================================
OPS提供的dialog实现对话框功能有两种使用方式: 内嵌和引用
一. 内嵌
基本原理: 与一般的XForms元素一样, 直接将对话框内容嵌入页面中.
语法: 参考OPS相关的文档
案例: 参考OPS提供的案例
二. 引用
基本原理: xxforms:dialog + iframe
语法: 在xxforms:dialog中, 通过iframe来引用对话框的内容;
关键技术点:
1. 主页面与对话框之间的通信
1.1 主页面刷新对话框的机制
通过OPS中在submission上扩展的xxforms:target来实现.
1.2 主页面访问对话框中的方法[数据传递]
通过iframe提供的机制实现[window.iframe-name.fun-name()], 通过参数传递数据;
1.3 对话框访问主页面中的方法[数据传递]
通过iframe提供的机制实现[parent.fun-name()], 通过参数传递数据;
2. 如何控制对话框中的iframe只刷新一次
基本原理: 在xxforms-dialog-open事件中有条件的刷新iframe.
案例:
<xforms:action ev:event="xxforms-dialog-open"
if="string(instance('dialog-flag')/is-load-dialog-content)=''">
<xforms:setvalue ref="instance('dialog-flag')/is-load-dialog-content" value="'true'"/>
<xforms:send submission="load-dialog-content"/>
</xforms:action>
3. 主页面如何触发对话框中xforms action
第一步, 主页面通过window.iframe-name.fun-name()调用对话框中的一个js方法;
第二步, 在对话框中的js方法中使用 JUSTEP.dispatchEvent(target, event-name)向某个control[一个model或trigger]派发一个事件;
第三步, 在这个control上使用xforms action来监控这个事件即可.
4. js如何访问xforms instance中的数据[单个节点内容或整个DOM对象]
第一步, 使用一个xforms展现组件[xforms:input\xforms:output\xforms:textarea]显示需要访问的数据
对于单个节点的内容, 可以直接使用ref; 对于整个DOM的内容, 可以使用saxon:serialize(instance('user-checked-id'), 'xml')将某个DOM
进行序列化.
例如:
<xforms:trigger>
<xforms:label>xforms instance to js</xforms:label>
<xforms:action ev:event="DOMActivate">
<xforms:setvalue ref="instance('output')/data"
value="saxon:serialize(instance('user-checked-id'), 'xml')"/>
<xxforms:script>
var data = JUSTEP.getXformsValue("dialog-output");
</xxforms:script>
</xforms:action>
<xforms:trigger>
<xforms:textarea style="display:none" id="dialog-output" ref="instance('output')/data"/>
第二步, js访问相应control的内容
使用JUSTEP.getXformsValue(control-id)来实现.
最终, js通过control作为中介, 访问到xforms instance中的内容.
5. js如何修改xforms instance中的节点[单个节点的内容或为某个节点添加子节点]
第一步, 将js中的数据赋值到某个control上
使用JUSTEP.setXformsValue(control-id, value)来实现, 其中这个control与xforms instance的某个节点关联[如果修改是xforms instance中
单个节点的值, control与那个节点关联即可; 否则control关联的节点是一个中间节点, 并进行以下操作]
例如:
JUSTEP.setXformsValue("dialog-output", data);
<xforms:textarea style="display:none" id="dialog-output" ref="instance('dialog-flag')/data"/>
第二步, 将控制权转交给标准的xforms:action
通过JUSTEP.dispatchEvent(target, even-name)来实现
例如:
JUSTEP.dispatchEvent('close-dialog-trigger', 'DOMActivate');
<xforms:trigger id="close-dialog-trigger">
<xforms:label>close</xforms:label>
<xforms:action ev:event="DOMActivate">
<xforms:insert context="instance('select-material-output-instance')"
origin="saxon:parse(instance('dialog-flag')/data)/form/FSelected"/>
</xforms:action>
</xforms:trigger>
第三步, 在xforms:action中使用xforms:insert + saxon:parse来实现
例如:
<xforms:insert context="instance('select-material-output-instance')"
origin="saxon:parse(instance('dialog-flag')/data)/form/FSelected"/>
分享到:
相关推荐
要使用 XForms,需要安装 XForms 扩展,以便在 Firefox、Internet Explorer、Seamonkey 或 Mozilla 的当前版本中直接查看 XForms 文档。 七、XForms 的常见应用场景 XForms 的常见应用场景包括: * 简单的搜索...
1. **数据模型(Data Model)**:XForms的数据模型允许开发者定义表单中处理的数据结构。它可以包含来自多个来源的数据,如本地存储、服务器端数据库或Web服务。数据模型提供了一种灵活的方式来管理和更新表单数据。...
1. **异步通信**:Ajax的核心是XMLHttpRequest对象,它可以在后台与服务器通信,不会阻塞用户的界面交互。 2. **局部更新**:Ajax允许我们只更新页面的一部分,而不是整个页面,这在实现自动建议功能时非常有用,...
【XForms客户端处理器的研究与实现】 XForms是一种下一代的Web表单标准,由W3C在2003年发布,旨在解决HTML表单在功能和灵活性上的局限性。传统HTML表单在处理复杂的交互、数据验证和表现分离方面存在不足,而XForms...
例如,`<xforms:input ref="/composers/composer/name">` 就将输入框与 XML 实例中的 `/composers/composer/name` 节点关联,这样用户输入的名字会直接保存到该节点。 3. **用户界面(User Interface)**:XForms ...
这些规则使得XForms能够自主处理用户交互,减少与服务器的通信。 3. **表现定义** - XForms提供一组标准化的UI构件,称为XForms用户界面。这些构件的实现细节由XForms处理器决定,提供了高度的灵活性。例如,单选...
XForms 是下一代的 HTML 表单。 在我们的 XForms 教程中,您将学习如何在应用程序中开始应用 XForms。
在`sample.xhtml`中,我们可以创建相应的输入字段,并通过`<xforms:bind>`元素将它们与`instance.xml`中的相应元素关联起来,同时引用`schema.xsd`进行验证: ```xml <xhtml:form xmlns:xforms=...
本文将深入探讨如何在Eclipse环境中利用XForms和Ajax来实现自动建议的表单字段。 XForms是一种基于XML的表单标准,它为Web应用程序提供了更强大、更灵活的数据输入和处理能力。XForms的主要优点包括与模型分离的...
在分布式系统中,WSDL是客户端和服务端之间通信的重要桥梁。 **二、XForms解析** XForms是XML Forms Data Model的缩写,是一种基于XML的表单表示和处理标准。它提供了比传统HTML表单更强大的功能,如数据验证、数据...
XForms后端允许编辑Web表单中的XML文档,并且自动维护源实体和目标实体之间的关系。 也就是说,当CPF关系被添加到指向同一系统内另一个实体的源文档中时,目标文档将被更新以将CPF关系插入回源中。 这些CPF关系的...
Praekelt XForms 服务 使用和构建的 RESTful XForms 处理服务。配置该服务的配置当前位于example_conf.yml 。 要将其替换为您自己的,只需将文件路径指定为运行时参数(见下文) Dropwizard 还提供有效应用程序配置...
- **事件处理**:支持XForms中的事件模型,允许开发者定义并处理各种用户交互事件。 - **动态表单构建**:根据后台数据模型动态生成表单,简化前端开发工作。 - **用户界面增强**:通过XForms,可以创建更丰富的用户...
Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm
在 XForms for UBL 中,XLST 用于将 UBL 文档的结构转换为可视化的表单布局,或者将用户在表单上填写的数据转换回 UBL 格式的 XML 文件。这种转换过程是自动进行的,使得数据的呈现和存储都符合 UBL 的标准。 **...
4. **部署和测试**:将生成的XForms文档嵌入到你的网页中,然后在不同的浏览器和设备上测试其兼容性和用户体验。 5. **持续更新和维护**:由于项目是开源的,你可以持续关注项目的新版本,获取新的功能和性能优化,...
在提供的压缩包文件中,"test-suite"可能是用于验证转换器性能和准确性的测试用例集合,包含了不同类型的XHTML表单和期望的XForms结果。通过运行这些测试,开发者可以确保转换器在各种情况下都能正确地工作。另一...
在 Web 浏览器中呈现 W3C XFORMS。 支持 XMLEvents、XLinks、XML Schema、XHTML 和 CSS。 代码是用 javascript 编写的,支持 Microsoft 和 Netscape 浏览器。
登录Xforms-Basex 该项目继续 xforms登录中的表单登录(用户名和密码)。 成功验证重定向后。 帐户创建。 使用按钮示例。 验证在login.xml输入的数据,并使用用户标识符的值创建user会话变量。 删除会话变量并...