2011-01-02 2 views

ответ

0

Вы можете использовать XSLT-шаблоны. Они помогут вам сохранить свою бизнес-логику и контент (XML) отдельно, чтобы, если ваш код изменится в будущем, вы просто настроите шаблон без влияния на ваш XML-интерфейс.

Я предполагаю, что другие приложения будут зависеть от вашего вывода XML и что вы, вероятно, захотите убедиться, что он остается однородным и последовательным.

XSLT также может работать с несколькими платформами, поэтому, если вы когда-либо переходите с Perl на другой язык, вы можете взять это с собой.

+2

Как именно вы можете перевести ** данные формы ** с помощью XSLT? (в отличие от создания HTML-формы формы из XML-ввода)? – DVK

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, требуемого модуля XML, данные формы образца или структуры XML); Я предположил, что предопределенный набор элементов формы, имена которых находятся в хешх %process_form_field, переводится в элементы XML с тем же именем, которые все хранятся без помех под родительским элементом <root_element_name>, и что ваша веб-фреймворк Perl имеет метод process_form_data(), который переводится из данных формы (QUERY_STRING или POST) в имена входных элементов формы хеш-файла для представленных значений (например, Embperl имеет встроенный хэш-код %fdat, который автоматически достигает этого). Я также предполагаю, что ни один из элементов не подает> 1 значение для простоты.

Смежные вопросы