我最近被XForms (W3C 1.1,ODK XForms)绊倒了,我很难看到它们是如何被使用的(如果它们还在使用的话)。
SO标签页上写着:
XForms是一种XML格式,它为XML数据指定数据处理模型和用户界面。例如:网页表格。
现在我看了一下W3C实例,没有看到任何类型的用户界面。这里显示的只是XML。
我所做的
当我想在网络上有一个表单的时候,我必须要做的是:前端和后端。前端要么使用`/ / HTML元素和CSS直接编写样式,要么用烧瓶之类的包生成样式。
后端侦听获取/ POST HTTP请求以接收表单。
问题
我有很多初学者的问题。我的主要问题是,XForms是如何使用的?。一个最小的Python示例对我来说是最有价值的。也许一些简单的东西,比如注册表单:用户名字段、密码字段和密码确认字段可以显示这一点。
我会创建这样的HTML:
<form action="" method="POST">
<label for="username">Username</label>
<input type="text" name="username" id="username" />
<label for="pw">Password</label>
<input type="password" name="pw" id="pw" />
<label for="pw2">Confirmation</label>
<input type="password" name="pw2" id="pw2" />
<input type="submit" />
</form>
使用烧瓶,后端可能如下所示:
# Third party modules
from flask import redirect, url_for, render_template
from flask_login import current_user
from flask_wtf import FlaskForm
from wtforms import PasswordField, StringField, SubmitField
# First party modules
from my_db_models import User
class LoginForm(FlaskForm):
email = StringField("Email")
password = PasswordField("Password")
submit = SubmitField("Log In")
@auth.route("/login", methods=["GET", "POST"])
def login():
if current_user.is_authenticated:
return redirect(url_for("main.index"))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash(INVALID_EMAIL_OR_PASSWORD, "error")
return redirect(url_for("auth.login"))
login_user(user, remember=form.remember_me.data)
return redirect(url_for("index"))
return render_template("login.html", form=form)
对XForms来说,这会是什么样子?XForms的典型用例究竟在哪里?他们有什么可比较的?XForms仅用于Java吗?(我见过Python包,但我从未听说过它们)
发布于 2020-05-10 11:58:39
我提供了一些答案,您的一系列问题出现在上面。
XForms的典型用例究竟在哪里?
任何看起来像表格的东西。
它解决了哪一个问题?
XForms提供了一种更高级的声明性语言来描述和验证表单.
他们有什么可比较的?
HTML表单作为一个下限,框架如React和Vue和角。但在现实中,没有什么能做到XForms所做的事情,因为XForms对表单有很强的关注,而其中的许多框架却不这样做。参见我之前写过的这个答案。
XForms仅用于Java吗?
(请注意,对于" XForms ",我更喜欢单数,如“XForms规范”。当时有一篇老文章喜欢复数,一次很流行,但在我看来,这并不能使复数正确。)
不,正如注释中所讨论的,XForms处理器可以在JavaScript或任何您想要的东西中实现。历史上,JavaScript中有浏览器插件、客户端实现和混合客户机-服务器实现。
XForms是如何使用的?
这取决于处理器的实现。您可以在宿主语言中编写XForms标记和属性,比如HTML。然后,在链接到处理器的JavaScript库时,将该文档提供给浏览器,或者,对于具有服务器组件的实现,您可以将该文档提供给服务器端库。
这是否意味着XForms是JavaScript客户端表单数据评估的替代方案?只是那样还是更多?
更多的是,它可能也可能没有客户端、服务器端或JavaScript的任何东西,尽管在最初的意图和实践中,其想法是它是内建浏览器表单处理的替代和增强。
无论是Firefox还是Chrome,我都找不到插件。你碰巧认识一个?
不,插件已经过时了。
发布于 2020-05-11 06:53:58
ODK生态系统使用了XForms 1.1的子集,并被广泛使用,因为它允许在表单定义中描述复杂的逻辑,并且有许多兼容的工具(表单构建器、数据聚合器、数据收集客户端)可用(例如KoBoToolbox、Ona、Survey123、ODK)。正如Alain所提到的,它不是XForms兼容的,很可能永远不会支持完整的规范,但是在过去的几年里,它们已经越来越接近了。由于历史原因,一些奇怪的偏差已经存在(并有望最终消失)。
然而,大多数ODK用户不知道他们的工具是由XForms驱动的,因为这是由表单构建器(如pyxform (参见XLSForm.org)、KoBo的表单构建器和ODK构建)抽象出来的。
ODK生态系统中有一个数据收集客户端的javascript实现,称为Enketo (参见enketo.org)。
发布于 2020-05-09 09:02:20
XForms已被指定用于主机语言(如XHTML或SVG )中。ODK不是一个完全符合要求的实现。我自己的XForms实现(XSLTForms)基于XSLT1.0(在浏览器中本机可用)来生成HTML+Javascript运行时。
https://stackoverflow.com/questions/61700111
复制相似问题