テキストを前処理するカスタム・コンバーターの作成

Web Services コンバーターを追加した後で、テキストを前処理するカスタム・コンバーターを作成する必要があります。

このタスクについて

REST ベースの Web サービスは、CGI パラメーターの形式の入力を受け入れます。CGI パラメーターは名前と値のペアです。<content> エレメントにも名前と値があります。Web Services コンバーターはこの類似性を活用します。Web Services コンバーターの構成では、<content> エレメントが名前によって識別され、それらのコンテンツ名および関連するコンテンツ値が CGI パラメーターの名前および値として Web サービスに送信されます。

Web Services コンバーターによって使用されるデータを準備するには、以下の操作を行うカスタム・コンバーターを作成する必要があります。

  • すべての入力を出力にコピーします。この操作は、すべての XML エレメントとそれらの属性を含むすべての XML 入力を保持する必要があります。
  • 新規 <content> エレメントを生成します。Web サービスに送信される必要がある CGI パラメーターごとに 1 つの新規 <content> を作成する必要があります。
    注: 場合によっては、<document> には、Web サービス CGI パラメーターのいずれかと同じ名前を持つ <content> が既に含まれていることがあります。この <content> が、Web サービスに送信される必要がある名前と値のペアを既に正確に表わしている場合、それ以上のアクションは不要です。しかし、<content> が送信の対象でないにもかかわらず、送信される必要がある CGI パラメーター名と一致する名前を持っている場合は、この前処理コンバーターを使用して、この <content> を、新しい名前を持つ新規 <content> に置き換える必要があります。カスタム後処理コンバーターを使用すると、この値を、元の名前を持つ <content> に戻すことができます。

以下の XSL をカスタム・コンバーター内にドロップして、このタスクを実行することができます。この XSL は、以下の操作を行います。

  • すべての入力を出力にコピーします。
  • 「name」という名前の新規 <content> を作成し、それに「value」という値を割り当てます。
  • 「text」という名前の新規 <content> を作成し、その内部に「snippet」という名前の <content> の値をコピーします。「snippet」<content> には、通常、索引付けされる予定の非構造化テキストの大部分が含まれています。
<xsl:template match="/">
  <xsl:apply-templates select="@*|node()" />
</xsl:template>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()" />
  </xsl:copy>
</xsl:template>

<xsl:template match="document">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()" />

    <!-- that takes care of copying the contents, now add any new ones -->
    <content name="name">value</content>

  </xsl:copy>
</xsl:template>

<xsl:template match="content[@name='snippet']">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()" />
  </xsl:copy>

  <!-- copy the snippet, but also add a content to send to the webservice -->
  <content name="text">
    <xsl:value-of select="./text()" />
  </content>

</xsl:template>

上記の XSL を使用してカスタム・コンバーターを作成するには、以下のようにします。

手順

  1. 「Add a new converter」ボタンをクリックし、「Custom converter」を選択し、「Add」をクリックします。
  2. 「Type-In」として、「application/vxml-unnormalized」を選択します。
  3. 「Type-Out」として、「application/vxml-unnormalized」を選択します。
  4. コンバーターに Pre-processor for web service などの名前を付けます。
  5. 「Action」として、「xsl」を選択します。
  6. テキスト領域内に上記の XSL を貼り付けます。
  7. 「OK」をクリックします。
  8. コンバーター・リスト内で Web Services コンバーターの前に新規の「Pre-processor for web service」コンバーターが表示されていることを確認します。

次のタスク

このカスタム・コンバーターを正常に作成した後で、最終ステップとして、Web サービスからの応答を後処理するカスタム・コンバーターを作成します。応答を後処理するカスタム・コンバーターの作成を参照してください。