如何创建输出xml的web表单?

如何创建输出xml的web表单?,xml,perl,webforms,Xml,Perl,Webforms,我想创建一个输出xml的web表单。例如,输入字段将是名字,输出字段将是fname 为此,推荐的方法是什么?我对任何事情都持开放态度,并愿意学习新知识。您可以使用XSLT模板。它们将帮助您保持业务逻辑和内容(XML)的分离,这样,如果将来代码发生更改,您只需调整模板,而不会影响XML接口 我假设其他应用程序将依赖于您的XML输出,并且您可能希望确保它保持统一和一致 XSLT还可以与多个平台协同工作,因此,如果您从Perl迁移到其他语言,您可以随身携带。您希望从表单中直接生成XML而不提交表单,还

我想创建一个输出xml的web表单。例如,输入字段将是名字,输出字段将是fname


为此,推荐的方法是什么?我对任何事情都持开放态度,并愿意学习新知识。

您可以使用XSLT模板。它们将帮助您保持业务逻辑和内容(XML)的分离,这样,如果将来代码发生更改,您只需调整模板,而不会影响XML接口

我假设其他应用程序将依赖于您的XML输出,并且您可能希望确保它保持统一和一致


XSLT还可以与多个平台协同工作,因此,如果您从Perl迁移到其他语言,您可以随身携带。

您希望从表单中直接生成XML而不提交表单,还是在提交表单时从处理表单数据的后端脚本生成XML


对于第一个选项(在客户端生成XML而不提交表单),必须使用JavaScript

  • 给你
  • 然后,使用JS循环表单的输入元素,并使用该API创建XML节点
因为Perl是您的标记之一,所以我假设这不是您想要做的,并且不会进一步扩展


对于第二个选项(提交时处理表单数据的后端脚本),可以使用以下代码结构

use XML::Simple;
my %form_fields = process_form_data(); 
    # This depends on what framework you use, e.g. CGI.pm, TT, Embperl, etc...
    # Most Perl web frameworks already create a hash for you
    #      with keys being input element names
my %xml_hash = ();
foreach my $name (keys %form_fields) {
    next unless $process_form_field{$name}; # If only some are put into XML
    $xml_hash{$name} = $form_fields{name};  # Assuming no multiple values. 
}
# Loop over $xml_hash keys and find if any required ones are missing...
my $xml_string = XMLOut({root_element_name => \%form_fields});

这是一个近似值(确切的答案是不可能的,因为您没有澄清任何细节,例如PerlWeb框架、所需的XML模块、示例表单数据或XML结构);我假设一组预定义的表单元素的名称位于
%process\u form\u field
散列中,它们被转换成具有相同名称的XML元素,所有这些元素都存储在
父元素下,并且Perl web框架有一个从表单数据转换而来的方法
process\u form\u data()
(查询字符串或POST数据)到哈希映射表单的输入元素名称到提交的值(例如,Embperl有一个内置的
%fdat
哈希自动实现)。为了简单起见,我进一步假设没有任何元素提交>1值。

如何使用XSLT翻译表单数据?(与从XML输入生成表单的HTML相反)?