本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

XForms のヒント: XForms データを Perl で受け付ける

Tyler Andersonは2004年にBrigham Young Universityにてコンピューター・サイエンスの学位を取得しており、現在はコンピューター・エンジニアリングの修士取得に向けての最終学期を送っています。これまで、DPMG.COMのデータベース・プログラマーとして働いたことがあり、現在はオレゴン州BeavertonにあるStexar Corp.のエンジニアです。

概要: Perl プログラミング言語はインターネットで広く使われており、今後もその人気は続くと思われます。Perl はストリングを非常にうまく処理できるため、プログラムが容易な言語と考えられています。また、他のプログラミング言語では何行も必要になるものが、Perl ならば数行でできてしまうこともあります。今回のヒントでは、POST を使って Perl スクリプトに XForms フォームを送信する方法と、そのデータをキャプチャーし、後で使えるようにする方法について説明します。

日付:  2006年 10月 03日
レベル:  中級 この記事の原文:  英語
アクティビティー: 3025 ビュー
お気軽にご意見・ご感想をお寄せください: 


インスタンス・データ

今回のヒントで使用するインスタンス・データをリスト 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 のサンプルは、(XForms エクステンションをインストールした) Firefox 1.5 と、Formsplayer コントロールをインストールした Microsoft® Internet Explorer 6 でテストされ、動作しています。ダウンロードには、Firefox 用の XHTML ファイルと IE 用の HTML ファイルが含まれています。

次に、Perl スクリプトをコールするために必要なフォームを見てみましょう。


Perl スクリプトにリクエストを送信する

Perl スクリプトに POST リクエストを行う方法は、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 を Perl スクリプトの URL (この場合は http://localhost/cgi-bin/xformsPerl.pl) に設定します。次に、このリクエストを Perl を使って処理します。


Perl を使ってリクエストを処理する

リスト 3 には、XForms の POST リクエストを受信する Perl スクリプトが含まれています。


リスト 3. Perl を使って POST リクエストをキャプチャーし、表示する
                
#!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;

最初の 2 つの use 文は、どのような警告レポートや構文チェックが必要なのかを Perl に命令しています。その次の 2 つの use 文は、CGI スタイルのスクリプトを使っていることを Perl に伝えています。次に、text/xml のコンテンツ・タイプを持つヘッダーが表示されます。次に、POST されたデータを param('POSTDATA') 変数から取得します。最後の print 文は、この XML をブラウザーに表示します (図 1)。


図 1. XForms XML インスタンス・データを Perl を使って表示する

素晴らしい! これで、Perl の XML::Simple を使って、あるいは任意の Perl XML モジュールを使って、自由自在に XML を処理できるのです。Perl と XML を使い始めるためには、参考文献にあげた IBM developerWorks のリソースを参照してください。


まとめ

これで、Perl スクリプトに POST リクエストを送信する XForms を作成できるようになりました。そして、フォームから送信された XML インスタンス・データをキャプチャーし、処理できるようになりました。Perl と同じくらい一般的な Web プログラミング言語を使っている人達にとっては、そこに XForms を追加することは興奮すべき新たな冒険であり、もう皆さんは既にその冒険に出発しているのです。



ダウンロード

内容ファイル名サイズダウンロード形式
Perl XForms samplesxforms_perl_source.zip4KBHTTP

ダウンロード形式について


参考文献

著者について

Tyler Andersonは2004年にBrigham Young Universityにてコンピューター・サイエンスの学位を取得しており、現在はコンピューター・エンジニアリングの修士取得に向けての最終学期を送っています。これまで、DPMG.COMのデータベース・プログラマーとして働いたことがあり、現在はオレゴン州BeavertonにあるStexar Corp.のエンジニアです。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML
ArticleID=252449
ArticleTitle=XForms のヒント: XForms データを Perl で受け付ける
publish-date=10032006
author1-email=tyleranderson5@yahoo.com
author1-email-cc=dwxed@us.ibm.com

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。