Пример данных, которые мы будем использовать в этом совете, показан в листинге 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>
|
Далее посмотрите на форму, которую необходимо вызвать в вашем 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
Отлично! Теперь вы можете работать с XML, как вам захочется, используя модуль XML::Simple или любой другой модуль Perl для работы с XML. В Ресурсах вы сможете найти статьи и руководства на IBM developerWorks, которые помогут вам начать использовать Perl и XML.
Теперь вы умеете создавать XForm форму, которая отправляет POST запросы Perl скрипту, а также получать и обрабатывать XML данные, которые посылает форма. Если вы используете такой же распространенный как Perl язык для web-программирования, то включение XForms будет для вас новым приключением, и у вас все получится.
| Описание | Имя | Размер | Метод загрузки |
|---|---|---|---|
| примеры использования XForms в Perl | xforms_perl_source.zip | 4KB | HTTP |
- Примите участие в обсуждении материала на форуме.
-
Оригинал статьи "XForms tip: Accepting XForms data in Perl"
-
Данная статья поможет вам начать работать с Perl и XML (developerWorks, Февраль 2000).
-
Узнать больше о других возможных типах схем для входных данных XForms вы сможете здесь.
-
Данная серия статей является хорошим руководством для начала работы с XForms.
-
Начните отсюда изучение Visual XForms Designer на alphaWorks.
-
В зоне
XML на developerWorks размещены ресурсы, необходимые для повышения вашей квалификации по XForms и другим XML-технологиям.
-
В
книжном магазине вы можете найти книги по этой и другим техническим темам.
Тайлер Андерсен (Tyler Anderson) получил степень бакалавра вычислительной техники в 2004 и степень магистра электротехники и проектирования ЭВМ компьютеров в 2005 в Brigham Young University. С мая 2005 по август 2006 года Тайлер работал в корпорации Stexar на должности инженер-разработчик, пока Stexar не закрылась. С начала сотрудничества Тайлера с Backstop Media LLC в начале 2005 года им было написано множество статей и обучающих руководств для IBM developerWorks и DevX.