我想创建一个输出xml的Web表单。例如,输入字段为First Name,输出为fname
为此 - 推荐的方法是什么?我对任何事情持开放态度,并愿意学习新东西。
答案 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迁移到其他语言,可以随身携带。