コンボボックス の目的は、以下のとおりです:
1.XML ページソース の Cities 要素にリストされる都市の名前を表示するため 2.ユーザーが都市を選択すると、 その都市の現在の時刻を SOAP リクエストに送信するため 3.ユーザーの選択により影響を受けるすべての //Time と //Timezone ノードを更新するため(下のスクリーンショット内の更新アクション ' を参照)
コンボボックスのドロップダウンリスト内のアイテムの選択
デザイン内でコンボボックスコントロールをダブルクリックして、[コンボボックスの編集]ダイアログを表示します。コンボボックスドロップダウンリストのアイテムは、 XML ページソースの Cities 要素内の都市名です。 これらの都市名は、 XPath 式 $XML1/CityTime/Cities/City/Name と一緒に選択されます。これらの都市名の XML 値は、都市名のテキスト(コンボボックスのドロップダウンリストの表示されるエントリ)と同じになるように設定されています。
ユーザーが都市をコンボボックス内から選択すると、(コンボボックスエントリと同じ)選択の XML 値がノード $XML1/CityTime/SelectCity/City/Name にパスされます。 これは、コンボボックス とこの XML ツリーノード間にページソースリンクを作成し、 ページソースペイン からツリーノードをコントロールにドラッグアンドドロップすることにより、アーカイブされます)。
都市の現在の時刻を取得するために SOAP リクエスト を定義する
コンボボックスのアクションダイアログを開くためにコンボボックスの左上のコントロールアクションシンボルをダブルクリックします。 (下のスクリーンショット)。 SOAP リクエストの実行 アクションはコンボボックスの[編集の完了時]イベントのために定義されています。 Web サービスは、指定されたタイムゾーンの現在の時刻を取得する(getTimeZoneTimeResult)オペレーションを提供します。 時刻がリクエストされるタイムゾーンは、 SOAP リクエストのパラメーターとして送信されます。 SOAP リクエストがどのように定義されたか確認するには、 SOAP リクエストの実行アクションの実行の [編集] ボタン (下のスクリーンショット出赤い枠でかこまれています)をクリックします。 SOAP リクエストダイアログ が表示されます。
SOAP リクエストダイアログ内の、プレビューペインに SOAP リクエストのテキストが表示されます。タイムゾーンパラメーターは、パラメーターペインに表示されます。 パラメーターの XPath ボタンをクリックして、 m:timezone パラメーターの値を選択する XPath 式を確認します:
for $i in $XML1/CityTime/SelectCity/City/Name return $XML1//Cities/City/TimeZone[../Name=$i]
XPath 式 は、最初にユーザーがコンボボックス内から選択した都市名を選択し、値を式の $i 変数内に保管します。 式は、次に(XML ページソースの Cities 要素から) $i 内の値にマッチする Name 要素を持つ都市のTimezone 要素を選択します。 このようにして、m:timezone パラメーターの SOAP リクエストとしてユーザーが選択した都市のタイムゾーンが設定されます。このリクエストを受け、 Web サービスは、リクエストされたタイムゾーンの現在の時刻を返します。
SOAP レスポンスを変数内に保管する
Web サービスからの SOAP レスポンスは、$MT_HTTPExecute_Result 変数に保管されており、 (上のスクリーンショット出青い枠でかこまれています)。 XML ドキュメントである SOAP レスポンス全体が変数に保管されていることに注意してください。 タイムゾーンの時刻を含むノードを選択するために SOAP レスポンスの構造を知る必要があります。下のサンプルの場合、次の XPath 式 が SOAPレスポンス内に保管されたタイムゾーンの時刻を検索します:
$MT_HTTPExecute_Result//getTimeZoneTimeResult
メモ: getTimeZoneTimeResult ノードは、 SOAP レスポンス内でプレフィックスが無く、 http://www.Nanonull.com/TimeService/ 名前空間内にあります。 デザインの XPath デフォルトの名前空間はこの名前空間に変更されます。 これが行われない場合、 SOAP レスポンス内のタイムゾーンの時刻が次の XPath 式でアクセスすることができます:他の名前空間内で要素ノードを検索する $MT_HTTPExecute_Result//*:getTimeZoneTimeResult。 要素ノードを名前空間内で検索する getTimeZoneTimeResult。 以下も参照: SOAP レスポンス内のノードの名前空間と XML ツリー。
タイムゾーンの時刻付きのノードの更新
ノードの更新 アクションは、2つの XML ツリー ノードを受け取ったタイムゾーンの時刻を使用して更新します: (i) $XML1/CityTime/SelectCity/City/Time と (ii) $XML1/CityTime/Cities/City[Name=$XML1/CityTime/SelectCity/City/Name]/Time。ハイライトされた部分は、2番目の式で、ユーザーが選択した都市の名前に一致する Cities データベース内の都市がアップデートされるように指定します。 これらの更新されたノードのコンテンツは、ページソースリンクを介して、すぐに表示されます (下の コールアウト 5 と 9 を参照)。 タイムゾーンの時刻の値は、$MT_HTTPExecute_Result 変数を使用した SOAP レスポンスから取得されます。
選択された都市のタイムゾーンの表示
ノードの更新 アクションは、 $XML1/CityTime/SelectCity/City/TimeZoneノードを更新するために使用されます。ノードが更新されるために使用する値は、次の式で選択されるノードのコンテンツです: $XML1/CityTime/Cities/City[Name=$XML1/CityTime/SelectCity/City/Name]/Timezone。 この式は、 Cities データベース内でユーザーが選択した都市の名前に一致する名前を持つ都市の TimeZone 要素を選択します。 更新されたノードのコンテンツは、 ページソースリンクを介して編集フィールドに表示されます (下のコールアウト 4 を参照)。
|