最近我偶然发现了XForms(W3C 1.1,ODK XForms),我很难看清它们的用法(如果仍然使用)。
SO标签页面说:
XForms是一种XML格式,它指定XML数据的数据处理模型和用户界面。例如。网络表单。
现在我查看了the W3C examples,但看不到任何类型的用户界面。在那里显示的只是XML。
[当我想在网络上拥有一个表单时,那么我就必须着手进行工作:前端和后端。前端要么直接使用<form> / <input> /
的HTML元素和CSS进行样式编写,要么使用flask-wtf之类的包生成它们。
后端侦听GET / 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>
并且使用Flask,后端可能看起来像这样:
# 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软件包,但我从未听说过)
XForms已被指定为在诸如XHTML或SVG的宿主语言中使用。 ODK不是完全兼容的实现。我自己的XForms实现(XSLTForms)基于XSLT 1.0(在浏览器中本来可用)来生成HTML + Javascript运行时。
我为您在上面出现的一系列问题提供一些答案。
XForms的典型用例到底在哪里?
任何看起来像表格的东西。
它解决了什么问题?
XForms提供了一种用于描述和验证表单的高级声明性语言。
它们具有什么可比性?
HTML形式是一个下限,而React和Vue和Angular等框架。但是实际上,没有什么功能可以完全实现XForms的功能,因为XForms着重于表单,而其中许多框架却没有。另请参阅this answer我写了一段时间。
“我的意见。)XForms仅在Java中使用吗?
否,如评论中所述,可以使用JavaScript或任何您想要的东西来实现XForms处理器。历史上一直存在浏览器插件,JavaScript中的客户端实现以及混合的客户端-服务器实现。
如何使用XForms?
取决于处理器的实现。您可以在宿主语言(例如HTML)中编写XForms标签和属性。然后,您可以将该文档提供给浏览器,同时链接到处理器的JavaScript库,或者对于具有服务器组件的实现,可以将其提供给服务器端库。
这是否意味着XForms是使用JavaScript进行客户端表单数据评估的替代方法?是仅此一个还是更多?
还有更多,它对客户端,服务器端或JavaScript可能有也可能没有任何东西,尽管在最初的意图和实践中,其想法是它替代并增强了内置浏览器表单处理。
我找不到用于Firefox或Chrome的插件。您碰巧认识一个人吗?
不,插件已成过去。
但是,大多数ODK用户都不知道他们的工具是由XForms驱动的,因为它是由pyxform(请参阅XLSForm.org),KoBo的表单构建器和ODK Build等表单构建器抽象的。
在ODK生态系统中有一个JavaScript实施的数据收集客户端,称为Enketo(请参阅enketo.org。)>