Как бы я создать веб-форму, которая будет выводить XML? - PullRequest
0 голосов
/ 02 января 2011

Я хотел бы создать веб-форму, которая будет выводить xml.Например, поле ввода будет иметь имя, а выход будет fname

. Для этого - какой будет рекомендуемый подход?Я открыт для всего и готов изучать что-то новое.

Ответы [ 2 ]

2 голосов
/ 02 января 2011

Хотите ли вы создать XML прямо из формы, не отправляя ее, или из внутреннего сценария, обрабатывающего данные формы при отправке?


Для первого варианта (генерировать XML нана стороне клиента без отправки формы), вы должны использовать JavaScript.

Поскольку Perl является одним из ваших тегов, я предполагаю, что это НЕ то, что вы хотите сделать и выиграли 't развернуть дальше.


Для второго варианта (внутренний скрипт, обрабатывающий данные формы после отправки), вы можете использовать следующую структуру кода.

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 для простоты.

0 голосов
/ 02 января 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...