`
hechengrong
  • 浏览: 29505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xforms中主页面与iframe间的通信

XML 
阅读更多

=============================================
======使用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"/>
  

1
0
分享到:
评论
1 楼 ghpaas 2014-06-12  
orbeon作为xforms标准的实现,不论其设计器还是运行时度存在很多问题:
设计器:仅仅是提供一个简单的工具,其实更加复杂的功能还需要开发人员手动编码。
并且需要花费大量的时间去熟悉、学习orbeon自身的功能。
运行时:提供的运行时开发人员几乎不能随便修改,造成不够灵活,譬如需要提供一个进度条、定制展现样式、定制对话框等,非常的复杂。
在此向博主及各位推荐使用GForms开发平台http://blog.csdn.net/ghpaas/article/details/30222989,GForms开发平台让开发人员甚至非技术人员在短短几分钟内创建全功能的展现服务,让开发团队更加适应客户和市场的需求,从而提高客户服务和速度实现收益。该开发平台提供可视化的设计器、运行时,设计器基于eclipse开发,非常的简单,完全实现xforms1.1标准,并且支持开发人员编写样式、javascript处理函数等。

GForms开发平台百度上有大量资料,且有iaas云管理平台Demo例子: http://yun.baidu.com/s/1bnznec3#dir/path=%2Fghorse

相关推荐

    XForms入门-官方文档

    要使用 XForms,需要安装 XForms 扩展,以便在 Firefox、Internet Explorer、Seamonkey 或 Mozilla 的当前版本中直接查看 XForms 文档。 七、XForms 的常见应用场景 XForms 的常见应用场景包括: * 简单的搜索...

    XForms XML Powered Web Forms

    1. **数据模型(Data Model)**:XForms的数据模型允许开发者定义表单中处理的数据结构。它可以包含来自多个来源的数据,如本地存储、服务器端数据库或Web服务。数据模型提供了一种灵活的方式来管理和更新表单数据。...

    使用 XForms 和 Ajax 创建自动建议表单字段(有BUG)

    1. **异步通信**:Ajax的核心是XMLHttpRequest对象,它可以在后台与服务器通信,不会阻塞用户的界面交互。 2. **局部更新**:Ajax允许我们只更新页面的一部分,而不是整个页面,这在实现自动建议功能时非常有用,...

    XForms客户端处理器的研究与实现.pdf

    【XForms客户端处理器的研究与实现】 XForms是一种下一代的Web表单标准,由W3C在2003年发布,旨在解决HTML表单在功能和灵活性上的局限性。传统HTML表单在处理复杂的交互、数据验证和表现分离方面存在不足,而XForms...

    XForms 基础知识

    例如,`&lt;xforms:input ref="/composers/composer/name"&gt;` 就将输入框与 XML 实例中的 `/composers/composer/name` 节点关联,这样用户输入的名字会直接保存到该节点。 3. **用户界面(User Interface)**:XForms ...

    xforms&ria

    这些规则使得XForms能够自主处理用户交互,减少与服务器的通信。 3. **表现定义** - XForms提供一组标准化的UI构件,称为XForms用户界面。这些构件的实现细节由XForms处理器决定,提供了高度的灵活性。例如,单选...

    XForms 教程

    XForms 是下一代的 HTML 表单。 在我们的 XForms 教程中,您将学习如何在应用程序中开始应用 XForms。

    XForms用schema(xsd)验证的一个简单的例子

    在`sample.xhtml`中,我们可以创建相应的输入字段,并通过`&lt;xforms:bind&gt;`元素将它们与`instance.xml`中的相应元素关联起来,同时引用`schema.xsd`进行验证: ```xml &lt;xhtml:form xmlns:xforms=...

    使用 XForms 和 Ajax 创建自动建议表单字段(Eclipse下开发)

    本文将深入探讨如何在Eclipse环境中利用XForms和Ajax来实现自动建议的表单字段。 XForms是一种基于XML的表单标准,它为Web应用程序提供了更强大、更灵活的数据输入和处理能力。XForms的主要优点包括与模型分离的...

    WSDL2XForms-开源

    在分布式系统中,WSDL是客户端和服务端之间通信的重要桥梁。 **二、XForms解析** XForms是XML Forms Data Model的缩写,是一种基于XML的表单表示和处理标准。它提供了比传统HTML表单更强大的功能,如数据验证、数据...

    xEAC:xEAC是基于XForms的开源应用程序,用于创建和管理EAC-CPF集合

    XForms后端允许编辑Web表单中的XML文档,并且自动维护源实体和目标实体之间的关系。 也就是说,当CPF关系被添加到指向同一系统内另一个实体的源文档中时,目标文档将被更新以将CPF关系插入回源中。 这些CPF关系的...

    xforms-service:RESTful XForms 处理器服务

    Praekelt XForms 服务 使用和构建的 RESTful XForms 处理服务。配置该服务的配置当前位于example_conf.yml 。 要将其替换为您自己的,只需将文件路径指定为运行时参数(见下文) Dropwizard 还提供有效应用程序配置...

    QCodo XForms Classes-开源

    - **事件处理**:支持XForms中的事件模型,允许开发者定义并处理各种用户交互事件。 - **动态表单构建**:根据后台数据模型动态生成表单,简化前端开发工作。 - **用户界面增强**:通过XForms,可以创建更丰富的用户...

    Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm

    Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm

    XForms for UBL-开源

    在 XForms for UBL 中,XLST 用于将 UBL 文档的结构转换为可视化的表单布局,或者将用户在表单上填写的数据转换回 UBL 格式的 XML 文件。这种转换过程是自动进行的,使得数据的呈现和存储都符合 UBL 的标准。 **...

    XSLT For XForms-开源

    4. **部署和测试**:将生成的XForms文档嵌入到你的网页中,然后在不同的浏览器和设备上测试其兼容性和用户体验。 5. **持续更新和维护**:由于项目是开源的,你可以持续关注项目的新版本,获取新的功能和性能优化,...

    XHTML to XForms converter-开源

    在提供的压缩包文件中,"test-suite"可能是用于验证转换器性能和准确性的测试用例集合,包含了不同类型的XHTML表单和期望的XForms结果。通过运行这些测试,开发者可以确保转换器在各种情况下都能正确地工作。另一...

    XFORMS Client-开源

    在 Web 浏览器中呈现 W3C XFORMS。 支持 XMLEvents、XLinks、XML Schema、XHTML 和 CSS。 代码是用 javascript 编写的,支持 Microsoft 和 Netscape 浏览器。

    login-xforms-basex:在basex数据库中创建帐户的项目

    登录Xforms-Basex 该项目继续 xforms登录中的表单登录(用户名和密码)。 成功验证重定向后。 帐户创建。 使用按钮示例。 验证在login.xml输入的数据,并使用用户标识符的值创建user会话变量。 删除会话变量并...

Global site tag (gtag.js) - Google Analytics