我如何创建一个输出xml的Web表单?

时间:2011-01-02 04:37:53

标签: xml perl webforms

我想创建一个输出xml的Web表单。例如,输入字段为First Name,输出为fname

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

2 个答案:

答案 0 :(得分:2)

您是想在不提交表单的情况下从表单生成XML,还是在提交时处理表单数据的后端脚本?


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

由于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});

这是一个近似值(确切的答案是不可能的,因为您没有澄清任何细节,例如您的Perl Web框架,所需的XML模块,样本表单数据或XML结构);我假设一组预定义的表单元素(名称在%process_form_field哈希中)被翻译成具有相同名称的XML元素,所有这些元素都完全存储在<root_element_name>父元素下,并且您的Perl Web框架有一个方法process_form_data()从表单数据(QUERY_STRING或POST数据)转换为哈希映射表单的输入元素名称到提交的值(例如,Embperl有一个内置的%fdat哈希值,可自动实现此目的)。为了简单起见,我进一步假设没有任何元素提交&gt; 1值。

答案 1 :(得分:0)

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

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

XSLT也可以在多个平台上运行,因此如果您从Perl迁移到其他语言,可以随身携带。

相关问题