Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Совет по XForms: Обработка данных XForms в языке Perl

Тайлер Андерсон, независимый автор, N/A
Тайлер Андерсен (Tyler Anderson) получил степень бакалавра вычислительной техники в 2004 и степень магистра электротехники и проектирования ЭВМ компьютеров в 2005 в Brigham Young University. С мая 2005 по август 2006 года Тайлер работал в корпорации Stexar на должности инженер-разработчик, пока Stexar не закрылась. С начала сотрудничества Тайлера с Backstop Media LLC в начале 2005 года им было написано множество статей и обучающих руководств для IBM developerWorks и DevX.

Описание:  Язык программирования Perl широко используется в Интернете, и он будет оставаться популярным достаточно долгое время. Perl cчитается удобным языком программирования, потому что он отлично обрабатывает строки. К тому же, то, что вы можете сделать в несколько строк на Perl’е, потребует много больше строк кода при использовании другого языка программирования. В этом совете вы узнаете о том, как отправлять XForms формы Perl-скрипту с использованием POST запроса и собирать данные для дальнейшего использования.

Больше статей из этой серии

Дата:  03.10.2006
Уровень сложности:  средний
Активность:  2371 просмотров
Комментарии:  


Пример данных

Пример данных, которые мы будем использовать в этом совете, показан в листинге 1.


Листинг 1. Пример документа
				
<auctionItems  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <auctionItem itemID="2">
    <purchaseDate>2006-09-18</purchaseDate>
    <auctionLength>600</auctionLength>
    <purchasePrice>10</purchasePrice>
    <description>Vintage hair dryer</description>
    <estimatedValue>N/A</estimatedValue>
  </auctionItem>
  <auctionItem itemID="5">
    <purchaseDate>2006-09-18</purchaseDate>
    <auctionLength>300</auctionLength>
    <purchasePrice>4</purchasePrice>
    <description>Box Lot</description>
    <estimatedValue>N/A</estimatedValue>
  </auctionItem>
</auctionItems>

Протестированные браузеры

Описанные в данном совете примеры XForms были протестированы при помощи Firefox 1.5 (с установленным расширением XForms) и Microsoft Internet Explorer 6 с установленным элементом управления Formsplayer. Файл для загрузки содержит XHTML-файл для Firefox и HTML-файл для IE.

Далее посмотрите на форму, которую необходимо вызвать в вашем Perl-скрипте.

Отправка запроса Perl-скрипту

POST запросы Perl-скрипту создаются также как и в HTML. Взгляните на форму в листинге 2.


Листинг 2. Отправка запроса Perl-скрипту
				
<?xml version="1.0" encoding="ASCII"?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ev="http://www.w3.org/2001/xml-events" 
      xmlns:xforms="http://www.w3.org/2002/xforms">
  <head>
    <title>Instance Data-To-XHTML/XForms Example</title>

    <xforms:model id="auctionItems">
      <xforms:instance src="auctions.xml"/>
      <xforms:submission id="submit_model_auctionItems" 
          action=http://localhost/cgi-bin/xformsPerl.pl
                         method="post"/>
    </xforms:model>
    <link href="gen_default.css" rel="stylesheet"/>
  </head>
  <body>
    
    <h1 align="center">Auction Item Inventory</h1>
    
    <xforms:repeat nodeset="auctionItem" id="repeatAuctionItems">
      <h2 align="center">Auction Item</h2>
      <xforms:input ref="@itemID">
        <xforms:label>Item ID</xforms:label>
      </xforms:input>
      <xforms:input ref="purchaseDate">
        <xforms:label>Purchase Date</xforms:label>
      </xforms:input>
      <xforms:input ref="auctionLength">
        <xforms:label>Auction Length</xforms:label>
      </xforms:input>
      <xforms:input ref="purchasePrice">
        <xforms:label>Purchase Price</xforms:label>
      </xforms:input>
      <xforms:input ref="description">
        <xforms:label>Description</xforms:label>
      </xforms:input>
      <xforms:input ref="estimatedValue">
        <xforms:label>Estimated Value</xforms:label>
      </xforms:input>

    </xforms:repeat>

    <xforms:group>
      <xforms:trigger>
        <xforms:label>Insert Auction Item</xforms:label>
        <xforms:insert nodeset="auctionItem" 
                       at="index('repeatAuctionItems')"
                       position="after" ev:event="DOMActivate" />
      </xforms:trigger>
      <xforms:trigger>
        <xforms:label>Delete Auction Item</xforms:label>
        <xforms:delete nodeset="auctionItem" 
                       at="index('repeatAuctionItems')"
                       ev:event="DOMActivate" />
      </xforms:trigger>
    </xforms:group>

    <xforms:submit submission="submit_model_auctionItems">
      <xforms:label>Submit</xforms:label>
    </xforms:submit>

  </body>
</html>

Обратите внимание на строчку, выделенную жирным. Кнопка отправки запроса привязана к этому тегу отправки и для того, чтобы она отправляла запросы вашему Perl-скрипту, нужно просто указать в качестве значения атрибута URL тега action URL вашего Perl-скрипта, в нашем случае это http://localhost/cgi-bin/xformsPerl.pl. Теперь вы будете использовать Perl для обработки запроса.


Обработка запроса с использованием Perl

Листинг 3 содержит Perl-скрипт, который получает XForms POST запрос.


Листинг 3. Захват и отображение POST запросов с использованием Perl
				
#!perl
use warnings;
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/xml\n\n";
my $data = param('POSTDATA');
print $data;

Первые два утверждения use говорят Perl’у, что вы хотите включить проверку синтаксиса и выводить отчеты о предупреждениях компилятора. Вторые два говорят Perl’у, что вы используете в скрипте средства CGI. В заголовке указано, какой будет тип контента: text/xml. Данные, отправленные методом POST, берутся из переменной param('POSTDATA'). Последнее утверждение print выводит XML в браузер, как показано на рисунке 1.


Рисунок 1. Отображение примера XForms XML данных с использованием Perl
Отображение примера XForms XML данных с использованием Perl

Отлично! Теперь вы можете работать с XML, как вам захочется, используя модуль XML::Simple или любой другой модуль Perl для работы с XML. В Ресурсах вы сможете найти статьи и руководства на IBM developerWorks, которые помогут вам начать использовать Perl и XML.


Резюме

Теперь вы умеете создавать XForm форму, которая отправляет POST запросы Perl скрипту, а также получать и обрабатывать XML данные, которые посылает форма. Если вы используете такой же распространенный как Perl язык для web-программирования, то включение XForms будет для вас новым приключением, и у вас все получится.



Загрузка

ОписаниеИмяРазмерМетод загрузки
примеры использования XForms в Perlxforms_perl_source.zip4KBHTTP

Информация о методах загрузки


Ресурсы

Об авторе

Тайлер Андерсен (Tyler Anderson) получил степень бакалавра вычислительной техники в 2004 и степень магистра электротехники и проектирования ЭВМ компьютеров в 2005 в Brigham Young University. С мая 2005 по август 2006 года Тайлер работал в корпорации Stexar на должности инженер-разработчик, пока Stexar не закрылась. С начала сотрудничества Тайлера с Backstop Media LLC в начале 2005 года им было написано множество статей и обучающих руководств для IBM developerWorks и DevX.

Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Спасибо. Эта запись была помечена для модератора.


Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Сообщение о нарушении не было отправлено. Попробуйте, пожалуйста, позже.


developerWorks: вход


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Выберите ваше отображаемое имя

При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

(Должно содержать от 3 до 31 символа.)


Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Оценить эту статью

Комментарии

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=XML
ArticleID=174467
ArticleTitle=Совет по XForms: Обработка данных XForms в языке Perl
publish-date=10032006
author1-email=tyleranderson5@yahoo.com
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).