では、FMPXMLRESULT文法のXMLデータを、HTMLへ変換する方法を考えましょう。変換はXSLを使います。まず、検索ページのフォーム中に、XSLで変換することを指定しておきましょう。
XSLで変換することを指定する |
---|
|
次に、「result.xsl」を書きましょう。
FMPXMLRESULT文法のXMLデータをHTMLに変換するXSLファイル「result.xsl」 |
---|
|
<xsl:template match="FMPXMLRESULT">〜</xsl:template>
<xsl:apply-templates select="RESULTSET" />
つまり、データを作るためのテンプレートを用意した。 <xsl:template match="RESULTSET">〜</xsl:template>
<xsl:apply-templates select="ROW" />で、
ROW要素を処理するテンプレートへ処理をまわしている。ROW要素を処理するテンプレートアクションの変換結果がここに埋め込まれて、タイトル行とともにtable要素を構成して、それが10行目に埋め込まれる。 <xsl:template match="ROW">〜</xsl:template>
<xsl:apply-templates select="COL" />
がある。COL要素に関するテンプレートを適用して、その結果がここに埋め込まれる。
<xsl:template match="COL">〜</xsl:template>
<xsl:value-of select="DATA" />
によってDATA要素の値を取り出して、<td>〜</td>タグで挟んでいる。
データ行を生成するテンプレートの流れをまとめると、以下のようになる。
<xsl:template match="COL">
では、<xsl:value-of select="DATA" />
によってDATA要素からフィールドの値を次々と取り出して、td要素でくくっていく。この変換結果は24行目の<xsl:apply-templates select="COL" />
にどんどん埋め込まれていく。
<xsl:apply-templates select="COL" />
の部分は、td要素(フィールドの値)がずらりと並んだ状態に置き換えられる。22行目からの<xsl:template match="ROW">
では、これ全体をtr要素でくくって、データ行(1レコード分)を作る。この変換は全てのROW要素に関して繰り返され、変換結果は18行目の<xsl:apply-templates select="ROW" />
にどんどん埋め込まれていく。
<xsl:apply-templates select="ROW" />
は、tr要素(検索該当レコード)がずらりと並んだデータ行のあつまりに置き換えられる。これが、17行目のタイトル行とともにtable要素を構成して、10行目の<xsl:apply-templates select="RESULTSET">
へ埋め込まれる。 <xsl:template match="FMPXMLRESULT" />には
、検索結果の表が完成する。 このように、XML要素ごとの処理をテンプレートアクション(<xsl:template match="ZZZ">〜</xsl:template>
)で記述し、それをテンプレート<xsl:apply-templates select="ZZZ" />
を使って適切な場所に埋め込むことで、XMLがHTMLに変換されていきます。>>