跳转到内容

XForms/提交

来自维基教科书,开放世界中的开放书籍

提交元素

[编辑 | 编辑源代码]

我们一直小心地将所有数据存储在模型中,原因之一是,一旦完成,就可以很容易地将模型序列化为 XML,并将其发送到文件、Web 服务或可能是数据库。

所有这些都是通过使用简单的submit 命令完成的。submit 实际上只是一个触发器,其 submission 属性指向模型中的提交元素。这通常是一个按钮,上面写着“提交”或“保存”,出现在表单的末尾。

在许多 HTML 表单中,您填写表单并按下表单底部的“保存”或“提交”按钮。您按下按钮,希望您的数据被保存。概念是相同的。但是,在这种情况下,submit 命令可以通过多种方式触发,不仅仅是按钮被按下,并且有一些明确的方法可以从接收方获取提交过程成功的反馈。

submit 事件的行为与触发器完全相同,但有一个关键的例外,即xforms-submit 事件也会被派发。

模型可以有多个提交,由id标识

  • <xforms:submission id="s001" method="post" action="action.php"/>
  • <xforms:submission id="s002" method="post" action="action2.php" replace="instance"/>
  • <xforms:submission id="s003" method="put" action="file:///tmp/final.xml"/>

第一次提交将数据发送到指定的 action,而第二次提交将期望获得一个返回的 xml 来更新当前文档/实例。第三次提交将保存文件到指定位置的本地/tmp/final.xml

屏幕图像

[编辑 | 编辑源代码]

界面非常简单。它只是一个简单的“保存”按钮,由名为 submit 的触发器创建。

XForms 保存按钮

示例程序

[编辑 | 编辑源代码]
<html
   xmlns="http://www.w3.org/1999/xhtml"
   xmlns:xf="http://www.w3.org/2002/xforms"
   xmlns:ev="http://www.w3.org/2001/xml-events">
   <head>
      <title>XForms Submit Example</title>
      <xf:model>
         <xf:instance xmlns="">
            <MyData>
               <Data1>One</Data1>
               <Data2>Two</Data2>
               <Data3>Three</Data3>
            </MyData>
         </xf:instance>
         <xf:submission id="save" method="put" action="myData.xml" ref="/MyData"/>
      </xf:model>
   </head>
   <body>
       <xf:submit submission="save">
         <xf:label>Save</xf:label>
      </xf:submit>
   </body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:xf="http://www.w3.org/2002/xforms"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/20021/XMLSchema-instance">
    
    <head>
        <title>Submission with get and put</title>
        <xf:model>
            <xf:instance id="data_instance" src="data.xml" xmlns=""></xf:instance>
            <xf:submission id="read-from-file" method="get" action="data.xml" replace="instance"
                instance="data-instance"></xf:submission>
            <xf:submission id="save-to-file" method="put" action="data.xml" replace="instance"
                instance="data_instance"></xf:submission>
        </xf:model>
    </head>
    <body>
        <p>Demonstration of using XForms to get and put data to local file using the submission
            element.</p>
        <xf:input ref="Element1">
            <xf:label>Element1:</xf:label>
        </xf:input>
        <br />
        <xf:input ref="Element2">
            <xf:label>Element2:</xf:label>
        </xf:input>
        <br />
        <xf:input ref="Element3">
            <xf:label>Element3:</xf:label>
            <br />
        </xf:input>
        <xf:submit submission="read-from-file">
            <xf:label>Reload</xf:label>
        </xf:submit>
        <xf:submit submission="save-to-file">
            <xf:label>Save</xf:label>
        </xf:submit>
    </body>
</html>

保存按钮实际上只是一个名为“submit”的触发器,有一个名为 submission 的属性。

   <xf:submit submission="save">

属性submission="save" 指向模型中提交元素的 ID。

   <xf:submission id="save" method="put" action="myData.xml" ref="/MyData"/>

请注意,由于我们使用的是“相对文件名”(相对于表单所在的目录),因此它将把数据保存在表单所在的同一个目录位置。

您也可以使用绝对路径名,但您必须小心如何描述磁盘驱动器,因为没有标准。

以下格式适用于使用 FireFox 浏览器的 Microsoft Windows 系统

   <xf:submission id="save" method="put" action="file:/C:/tmp/myData.xml" ref="/MyData"/>

Web 服务器配置

[编辑 | 编辑源代码]

注意:本节由不了解 Web 服务器管理的人员编写。自行阅读,并确保安全专业人员审核对公共 Web 服务器的任何更改。

本教程中的大多数示例都与学习 XForms 有关,而不是与 Web 服务器管理有关。也就是说,我们认为有一些东西可能对您有用。

默认情况下,Web 服务器通常没有配置为写入您的 Web 服务器。尤其是由未经授权的用户。如果是这样的话,黑客可能会使用您的 Web 服务器来存储他们的成人内容。

为了使 XForms 能够使用“put”保存实例,您应该只允许授权用户写入。为此,您需要能够正确地管理您的 Web 服务器。

Apache 2.2 Intranet 配置与 DAV

[编辑 | 编辑源代码]

如果您有一台内部用户(通常称为 Intranet)可以访问的计算机,您可以将以下内容添加到您的 Apache 配置文件(通常称为 httpd.config 并且位于 /usr/local/etc 或类似位置)。

首先,可能需要加载以下模块。

mod_dav, mod_dav_fs, mod_dav_svn, mod_authz_svn.

这可以通过在您的 httpd.conf 文件中添加以下行来完成。

LoadModule dav_module libexec/apache22/mod_dav.so
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so
<Directory "usr/local/www/apache22/data/forms/read-write-test">
   DAV on
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>

通过打开 DAV,您将启用所有 WebDAV 操作,包括“PUT”。

IIS 配置

[编辑 | 编辑源代码]

待完成...

参考文献

[编辑 | 编辑源代码]


下一页: 编码参数 | 上一页: 案例验证
首页: XForms
华夏公益教科书